-
Notifications
You must be signed in to change notification settings - Fork 182
Open
@optiz0r
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