drf 简单切换序列化器

根据是否有pk 切换序列化器

get_serializer_class源码

    def get_serializer_class(self):
        """
        Return the class to use for the serializer.
        Defaults to using `self.serializer_class`.

        You may want to override this if you need to provide different
        serializations depending on the incoming request.

        (Eg. admins get full serialization, others get basic serialization)
        """
        assert self.serializer_class is not None, (
            "'%s' should either include a `serializer_class` attribute, "
            "or override the `get_serializer_class()` method."
            % self.__class__.__name__
        )

        return self.serializer_class

views

class BlogView(ListModelMixin, RetrieveModelMixin, GenericViewSet):
    # 根据是否有pk 切换序列化器,重写get_serializer_class
    def get_serializer_class(self):
        pk = self.kwargs.get('pk')
        if pk:
            return BlogDetailModelSerializer
        return BlogModelSerializer
posted @ 2022-10-11 10:48  Sherwin_szw  阅读(33)  评论(0)    收藏  举报