@@ -301,15 +301,20 @@ def extract_relation_instance(cls, field, resource_instance):
301
301
Determines what instance represents given relation and extracts it.
302
302
303
303
Relation instance is determined exactly same way as it determined
304
- in parent serializer
304
+ in parent serializer, but if it is "skipped" on the serializer
305
+ it still should be returned via include
305
306
"""
306
- try :
307
- res = field .get_attribute (resource_instance )
308
- if isinstance (res , PKOnlyObject ):
309
- return get_attribute (resource_instance , field .source_attrs )
310
- return res
311
- except SkipField :
312
- return None
307
+ if isinstance (field , SkipDataMixin ):
308
+ res = super (SkipDataMixin , field ).get_attribute (resource_instance )
309
+ else :
310
+ try :
311
+ res = field .get_attribute (resource_instance )
312
+ except SkipField :
313
+ res = None
314
+
315
+ if isinstance (res , PKOnlyObject ):
316
+ return get_attribute (resource_instance , field .source_attrs )
317
+ return res
313
318
314
319
@classmethod
315
320
def extract_included (cls , fields , resource , resource_instance , included_resources ,
0 commit comments