Skip to content

Commit 066de0f

Browse files
committed
Rebased from develop
2 parents bc63e9f + fc69e1e commit 066de0f

File tree

1 file changed

+8
-4
lines changed

1 file changed

+8
-4
lines changed

rest_framework_json_api/utils.py

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -252,8 +252,12 @@ def extract_relationships(fields, resource, resource_instance):
252252
if not isinstance(field, (RelatedField, ManyRelatedField, BaseSerializer)):
253253
continue
254254

255-
relation_instance_or_manager = getattr(resource_instance, field_name)
256-
relation_type = get_instance_or_manager_resource_type(relation_instance_or_manager)
255+
try:
256+
relation_instance_or_manager = getattr(resource_instance, field_name)
257+
except AttributeError: # Skip fields defined on the serializer that don't correspond to a field on the model
258+
continue
259+
260+
relation_type = get_related_resource_type(field)
257261

258262
if isinstance(field, HyperlinkedIdentityField):
259263
# special case for HyperlinkedIdentityField
@@ -359,13 +363,13 @@ def extract_included(fields, resource, resource_instance):
359363
continue
360364

361365
relation_instance_or_manager = getattr(resource_instance, field_name)
362-
relation_queryset = relation_instance_or_manager.all()
363366
serializer_data = resource.get(field_name)
364367

365368
if isinstance(field, ListSerializer):
366369
serializer = field.child
367370
model = serializer.Meta.model
368371
relation_type = format_relation_name(model.__name__)
372+
relation_queryset = relation_instance_or_manager.all()
369373

370374
# Get the serializer fields
371375
serializer_fields = get_serializer_fields(serializer)
@@ -387,7 +391,7 @@ def extract_included(fields, resource, resource_instance):
387391
serializer_fields = get_serializer_fields(field)
388392
if serializer_data:
389393
included_data.append(
390-
build_json_resource_obj(serializer_fields, serializer_data, relation_queryset, relation_type)
394+
build_json_resource_obj(serializer_fields, serializer_data, relation_instance_or_manager, relation_type)
391395
)
392396

393397
return format_keys(included_data)

0 commit comments

Comments
 (0)