Skip to content

Commit 9b2217f

Browse files
committed
Updated dynamic relations to support manyrelatedfield
1 parent 9b0f517 commit 9b2217f

File tree

1 file changed

+13
-2
lines changed

1 file changed

+13
-2
lines changed

rest_framework_json_api/utils.py

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
from rest_framework.settings import api_settings
1515
from rest_framework.exceptions import APIException
1616

17+
1718
try:
1819
from rest_framework.serializers import ManyRelatedField
1920
except ImportError:
@@ -164,12 +165,22 @@ def build_json_resource_obj(fields, resource, resource_instance, resource_name):
164165
return OrderedDict(resource_data)
165166

166167

168+
def _extract_model(relation):
169+
from rest_framework_json_api.relations import ResourceRelatedField
170+
if isinstance(relation, ManyRelatedField):
171+
if isinstance(relation.child_relation, ResourceRelatedField):
172+
return getattr(relation.child_relation, 'model', None)
173+
if isinstance(relation, ResourceRelatedField):
174+
return getattr(relation, 'model', None)
175+
return None
176+
177+
167178
def get_related_resource_type(relation):
168179
if hasattr(relation, '_meta'):
169180
relation_model = relation._meta.model
170-
elif hasattr(relation, 'model'):
181+
elif _extract_model(relation) is not None:
171182
# the model type was explicitly passed as a kwarg to ResourceRelatedField
172-
relation_model = relation.model
183+
relation_model = _extract_model(relation)
173184
elif hasattr(relation, 'get_queryset') and relation.get_queryset() is not None:
174185
relation_model = relation.get_queryset().model
175186
else:

0 commit comments

Comments
 (0)