-
Notifications
You must be signed in to change notification settings - Fork 184
Open
Description
Where get_serializer_class()
is used to determine which serializer would be used for a ModelViewSet
, it doesn't re-create the same environment as DRF would use when servicing an actual API request, and so it may return different results (and thus incorrect documentation).
As an example, I have the following method, which uses a cut-down serializer for list actions, and a full-content serializer for retrieve actions:
class FooViewSet(viewsets.ReadOnlyModelViewSet):
queryset = Foo.objects.all()
def get_serializer_class(self):
if hasattr(self, 'action'):
if self.action == 'list':
return FooListSerializer
elif self.action == 'retrieve':
return FooSerializer
return serializers.Default
drfdocs doesn't currently set the self.action
member before calling get_serializer_class()
, so it gets the default serializer with no fields, whereas an actual API request would get either the FooSerializer
or the FooListSerializer
.
Metadata
Metadata
Assignees
Labels
No labels