@@ -366,7 +366,7 @@ def extract_relationships(fields, resource, resource_instance):
366366 relation_data = list ()
367367
368368 serializer_data = resource .get (field_name )
369- resource_instance_queryset = relation_instance_or_manager .all ()
369+ resource_instance_queryset = list ( relation_instance_or_manager .all () )
370370 if isinstance (serializer_data , list ):
371371 for position in range (len (serializer_data )):
372372 nested_resource_instance = resource_instance_queryset [position ]
@@ -413,13 +413,14 @@ def extract_included(fields, resource, resource_instance, included_resources):
413413 if not isinstance (field , (RelatedField , ManyRelatedField , BaseSerializer )):
414414 continue
415415
416- if field_name not in included_resources :
416+ try :
417+ included_resources .remove (field_name )
418+ new_included_resources = [key .replace ('%s.' % field_name , '' , 1 ) for key in included_resources ]
419+ relation_instance_or_manager = getattr (resource_instance , field_name )
420+ serializer_data = resource .get (field_name )
421+ except ValueError :
417422 # Skip fields not in requested included resources
418423 continue
419-
420- new_included_resources = [key .replace ('%s.' % field_name , '' , 1 ) for key in included_resources ]
421- relation_instance_or_manager = getattr (resource_instance , field_name )
422- serializer_data = resource .get (field_name )
423424
424425 if isinstance (field , ManyRelatedField ):
425426 serializer_class = included_serializers .get (field_name )
@@ -437,7 +438,7 @@ def extract_included(fields, resource, resource_instance, included_resources):
437438 serializer = field .child
438439 model = serializer .Meta .model
439440 relation_type = format_relation_name (model .__name__ )
440- relation_queryset = relation_instance_or_manager .all ()
441+ relation_queryset = list ( relation_instance_or_manager .all () )
441442
442443 # Get the serializer fields
443444 serializer_fields = get_serializer_fields (serializer )
0 commit comments