1313from django .db import models
1414from django .utils import six
1515
16+ from rest_framework .compat import (
17+ get_all_related_objects , get_all_related_many_to_many_objects
18+ )
19+
1620FieldInfo = namedtuple ('FieldResult' , [
1721 'pk' , # Model field instance
1822 'fields' , # Dict of field name -> model field instance
@@ -126,15 +130,7 @@ def _get_reverse_relationships(opts):
126130 # See: https://code.djangoproject.com/ticket/24208
127131
128132 reverse_relations = OrderedDict ()
129-
130- # The backward implementation can be found in the Django Documentation
131- # See: https://docs.djangoproject.com/en/1.9/ref/models/meta/#migrating-from-the-old-api
132- related_objects = [
133- f for f in opts .get_fields ()
134- if (f .one_to_many or f .one_to_one ) and f .auto_created
135- ]
136-
137- for relation in related_objects :
133+ for relation in get_all_related_objects (opts ):
138134 accessor_name = relation .get_accessor_name ()
139135 related = getattr (relation , 'related_model' , relation .model )
140136 reverse_relations [accessor_name ] = RelationInfo (
@@ -144,15 +140,8 @@ def _get_reverse_relationships(opts):
144140 has_through_model = False
145141 )
146142
147- # The backward implementation can be found in the Django Documentation
148- # See: https://docs.djangoproject.com/en/1.9/ref/models/meta/#migrating-from-the-old-api
149- all_related_to_many_objects = [
150- f for f in opts .get_fields (include_hidden = True )
151- if f .many_to_many and f .auto_created
152- ]
153-
154143 # Deal with reverse many-to-many relationships.
155- for relation in all_related_to_many_objects :
144+ for relation in get_all_related_many_to_many_objects ( opts ) :
156145 accessor_name = relation .get_accessor_name ()
157146 related = getattr (relation , 'related_model' , relation .model )
158147 reverse_relations [accessor_name ] = RelationInfo (
0 commit comments