Skip to content

Commit 0f74edf

Browse files
committed
Use DRF code to fetch related instance
1 parent db5cd72 commit 0f74edf

File tree

1 file changed

+3
-23
lines changed

1 file changed

+3
-23
lines changed

rest_framework_json_api/renderers.py

Lines changed: 3 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -301,30 +301,10 @@ def extract_relation_instance(cls, field_name, field, resource_instance, seriali
301301
"""
302302
Determines what instance represents given relation and extracts it.
303303
304-
Relation instance is determined by given field_name or source configured on
305-
field. As fallback is a serializer method called with name of field's source.
304+
Relation instance is determined exactly same way as it determined
305+
in parent serializer
306306
"""
307-
relation_instance = None
308-
309-
try:
310-
relation_instance = getattr(resource_instance, field_name)
311-
except AttributeError:
312-
try:
313-
# For ManyRelatedFields if `related_name` is not set
314-
# we need to access `foo_set` from `source`
315-
relation_instance = getattr(resource_instance, field.child_relation.source)
316-
except AttributeError:
317-
if hasattr(serializer, field.source):
318-
serializer_method = getattr(serializer, field.source)
319-
relation_instance = serializer_method(resource_instance)
320-
else:
321-
# case when source is a simple remap on resource_instance
322-
try:
323-
relation_instance = getattr(resource_instance, field.source)
324-
except AttributeError:
325-
pass
326-
327-
return relation_instance
307+
return field.get_attribute(resource_instance)
328308

329309
@classmethod
330310
def extract_included(cls, fields, resource, resource_instance, included_resources,

0 commit comments

Comments
 (0)