Skip to content

An idea to support per-method serializer in a Viewset #112

Open
@limdauto

Description

@limdauto

I've implemented something like this on my fork

from my_serializers import PasswordSerializer
from rest_framework_docs.utils import func_serializer

class UserViewSet(viewsets.ViewSet):

    @func_serializer(serializer_class=PasswordSerializer)
    @detail_route(methods=['post'])
    def set_password(self, request, pk=None):
        serializer = PasswordSerializer(data=request.data)

I wonder if you are keen on extending your library with something like this? I think it's a handy feature.

The downside of this is that we have to change application code to support documentation generation. Another approach is to use docstring, something like


class UserViewSet(viewsets.ViewSet):

    @detail_route(methods=['post'])
    def set_password(self, request, pk=None):
        """
        :func_serializer: my_serializers.PasswordSerializer
        """
        serializer = PasswordSerializer(data=request.data)

I think I like the first approach better.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions