File tree Expand file tree Collapse file tree 1 file changed +24
-0
lines changed Expand file tree Collapse file tree 1 file changed +24
-0
lines changed Original file line number Diff line number Diff line change 2323except ImportError :
2424 ManyRelatedField = type (None )
2525
26+ try :
27+ from rest_framework_nested .relations import HyperlinkedRouterField
28+ except ImportError :
29+ HyperlinkedRouterField = type (None )
30+
2631
2732def get_resource_name (context ):
2833 """
@@ -209,6 +214,25 @@ def extract_relationships(fields, resource):
209214 if not isinstance (field , (RelatedField , ManyRelatedField , BaseSerializer )):
210215 continue
211216
217+ if isinstance (field , HyperlinkedRouterField ):
218+ # special case for HyperlinkedRouterField
219+ relation_data = list ()
220+ relation_type = get_related_resource_type (field )
221+ parent_instance = field .parent .instance
222+ related = getattr (parent_instance , field_name ).all () if hasattr (parent_instance , field_name ) else list ()
223+ for relation in related :
224+ relation_data .append (OrderedDict ([('type' , relation_type ), ('id' , relation .pk )]))
225+
226+ data .update ({field_name : {
227+ 'links' : {
228+ "related" : resource .get (field_name )},
229+ 'data' : relation_data ,
230+ 'meta' : {
231+ 'count' : len (relation_data )
232+ }
233+ }})
234+ continue
235+
212236 if isinstance (field , (PrimaryKeyRelatedField , HyperlinkedRelatedField )):
213237 relation_type = get_related_resource_type (field )
214238
You can’t perform that action at this time.
0 commit comments