Skip to content

Commit 9b905b4

Browse files
committed
Use related_objects api for Django 1.9+
1 parent 378b7b8 commit 9b905b4

File tree

1 file changed

+12
-2
lines changed

1 file changed

+12
-2
lines changed

rest_framework/utils/model_meta.py

+12-2
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import inspect
99
from collections import OrderedDict, namedtuple
1010

11+
import django
1112
from django.apps import apps
1213
from django.core.exceptions import ImproperlyConfigured
1314
from django.db import models
@@ -134,7 +135,12 @@ def _get_reverse_relationships(opts):
134135
# See: https://code.djangoproject.com/ticket/24208
135136

136137
reverse_relations = OrderedDict()
137-
for relation in opts.get_all_related_objects():
138+
139+
if django.VERSION < (1, 9):
140+
rels = opts.get_all_related_objects()
141+
else:
142+
rels = [r for r in opts.related_objects if not r.field.many_to_many]
143+
for relation in rels:
138144
accessor_name = relation.get_accessor_name()
139145
related = getattr(relation, 'related_model', relation.model)
140146
reverse_relations[accessor_name] = RelationInfo(
@@ -146,7 +152,11 @@ def _get_reverse_relationships(opts):
146152
)
147153

148154
# Deal with reverse many-to-many relationships.
149-
for relation in opts.get_all_related_many_to_many_objects():
155+
if django.VERSION < (1, 9):
156+
rels = opts.get_all_related_many_to_many_objects()
157+
else:
158+
rels = [r for r in opts.related_objects if r.field.many_to_many]
159+
for relation in rels:
150160
accessor_name = relation.get_accessor_name()
151161
related = getattr(relation, 'related_model', relation.model)
152162
reverse_relations[accessor_name] = RelationInfo(

0 commit comments

Comments
 (0)