设置条件序列化器类删除自定义序列化器类以在 Django 休息框架中执行额外操作

g66 Gopanear

我有一个模型视图集和一些额外的操作。

class TestViewset(
    mixins.RetrieveModelMixin,
    mixins.ListModelMixin,
    mixins.UpdateModelMixin,
    GenericViewSet,
):
    permission_classes = [CustomPermissionClass]

    def get_serializer_class(self) -> Type[ModelSerializer]:
    
        if self.action == "list" or self.action == "get":
            return FirstSerializer
        return SecondSerializer


    @action(
        detail=True,
        methods=["POST"],
        url_path="test-path",
        url_name="test-path",
        serializer_class=MyCustomSerializer,
    )
    def test_path(self, request: Request, **kwargs) -> Response:
        
        print(self.get_serializer()) # Despite setting the 'MyCustomSerializer' it still gives me 'SecondSerializer'
       
        return Response(status=status.HTTP_200_OK)

如果我删除该get_serializer_class方法并只提供一个序列化程序,它就可以工作。

什么可能是最好的解决方案,或者这是 drf 中的任何错误?

理想情况下,额外的操作应该使用已经提供的序列化程序类,但不是。

女主播

对此可能有更好的方法,但在我的脑海中,您可以通过将您的更改get_serializer_class为:

    def get_serializer_class(self) -> Type[ModelSerializer]:
        if self.action == "list" or self.action == "get":
            return FirstSerializer
        return self.serializer_class or SecondSerializer

serializer_class如果操作既不是列表也不是获取,这将确保使用您的操作中定义那个。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

从Django Rest框架中的序列化器发送自定义错误响应?

Django Rest框架基于自定义类反序列化对象

DJANGO:如何编写自定义序列化器,以从相关模型中添加字段?

Django无法在序列化器中识别我的自定义更新方法

在Django中为用户设置默认的序列化器

如何在Django中从具有@property装饰器的模型类中序列化函数

Django 从视图中的序列化器类中获取模型

序列化中的嵌套字段在Django REST框架中使用自定义字段

django rest 框架中的嵌套序列化器数据

Django rest 框架 - 模型序列化器不会序列化所有字段

使用Django Rest框架序列化自定义数据类型并返回响应

如何在序列化器Django中序列化BigIntegerField,TextField

如何从 Django 中的序列化器序列化 JSON 请求数据?

Django:将我要序列化的对象嵌套到序列化器中?

django rest 框架 - 全局默认模型序列化器

django rest 框架:动态序列化器和 ViewSet

Django rest框架:序列化器和业务逻辑

实例化时Django REST框架序列化器错误

没有模型的Django REST框架序列化器

Django REST框架:非模型序列化器

django rest框架外键序列化器问题

Django rest框架仅创建序列化器字段

Django rest 框架反转序列化器

使用 Django Rest Framework 在序列化程序中自定义响应

Django REST序列化程序和自定义模型字段中的其他属性

Django Rest Framework序列化程序中的自定义错误消息

如何在Django Rest Framework序列化程序中自定义字段

嵌套序列化程序中的Django Rest Framework自定义URL

Django,在自定义json中插入两个序列化的对象模型