Skip to content

Commit d9b5f08

Browse files
committed
Improve serializer class resolving
1 parent 9e78e67 commit d9b5f08

File tree

1 file changed

+15
-2
lines changed

1 file changed

+15
-2
lines changed

rest_framework_json_api/views.py

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -128,13 +128,26 @@ def retrieve_related(self, request, *args, **kwargs):
128128
return Response(serializer.data)
129129

130130
def get_serializer_class(self):
131+
parent_serializer_class = super(RelatedMixin, self).get_serializer_class()
132+
131133
if 'related_field' in self.kwargs:
132134
field_name = self.kwargs['related_field']
135+
136+
assert hasattr(parent_serializer_class, 'included_serializers') or self.related_serializers,\
137+
'Either "included_serializers" or "related_serializers" should be configured'
138+
139+
# Try get the class from related_serializers
133140
class_str = self.related_serializers.get(field_name, None)
141+
134142
if class_str is None:
135-
raise NotFound
143+
# Class was not found in related_serializers, look for it in included_serializers
144+
class_str = getattr(self, 'included_serializers', {}).get(field_name, None)
145+
146+
if class_str is None:
147+
raise NotFound
136148
return import_class_from_dotted_path(class_str)
137-
return super(RelatedMixin, self).get_serializer_class()
149+
150+
return parent_serializer_class
138151

139152
def get_related_field_name(self):
140153
field_name = self.kwargs['related_field']

0 commit comments

Comments
 (0)