@@ -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