@@ -168,7 +168,9 @@ def build_json_resource_obj(fields, resource, resource_instance, resource_name):
168168
169169
170170def get_related_resource_type (relation ):
171- if hasattr (relation , 'get_queryset' ) and relation .get_queryset () is not None :
171+ if hasattr (relation , '_meta' ):
172+ relation_model = relation ._meta .model
173+ elif hasattr (relation , 'get_queryset' ) and relation .get_queryset () is not None :
172174 relation_model = relation .get_queryset ().model
173175 else :
174176 parent_serializer = relation .parent
@@ -270,11 +272,10 @@ def extract_relationships(fields, resource, resource_instance):
270272
271273 if isinstance (field , ManyRelatedField ):
272274 relation_data = list ()
273- related_object = field .child_relation
274- relation_type = get_related_resource_type (related_object )
275275 for related_object in relation_instance_or_manager .all ():
276+ related_object_type = get_related_resource_type (related_object )
276277 relation_data .append (OrderedDict ([
277- ('type' , relation_type ),
278+ ('type' , related_object_type ),
278279 ('id' , encoding .force_text (related_object .pk ))
279280 ]))
280281 data .update ({
@@ -289,20 +290,18 @@ def extract_relationships(fields, resource, resource_instance):
289290
290291 if isinstance (field , ListSerializer ):
291292 relation_data = list ()
292- serializer = field .child
293- relation_model = serializer .Meta .model
294- relation_type = format_relation_name (relation_model .__name__ )
295293
296294 serializer_data = resource .get (field_name )
297295 resource_instance_queryset = relation_instance_or_manager .all ()
298296 if isinstance (serializer_data , list ):
299297 for position in range (len (serializer_data )):
300298 nested_resource_instance = resource_instance_queryset [position ]
301- relation_data .append (
302- OrderedDict (
303- [('type' , relation_type ), ('id' , encoding .force_text (nested_resource_instance .pk ))]
304- )
305- )
299+ nested_resource_instance_type = get_related_resource_type (
300+ nested_resource_instance )
301+ relation_data .append (OrderedDict ([
302+ ('type' , nested_resource_instance_type ),
303+ ('id' , encoding .force_text (nested_resource_instance .pk ))
304+ ]))
306305
307306 data .update ({field_name : {'data' : relation_data }})
308307 continue
0 commit comments