gpt4 book ai didi

Django Rest 框架 : how to make field required/read-only only for update actions such as PUT and PATCH?

转载 作者:行者123 更新时间:2023-12-03 14:35:48 25 4
gpt4 key购买 nike

我有一个 Django Serializer,它有一个字段,只有更新操作(例如 PUT 和 PATCH)才需要该字段。但不适用于诸如 POST 之类的创建操作。

我发现了这个类似的 SO question但是没有关于如何编写自定义验证来检测操作是用于创建、更新还是补丁的线索。

同样,我想为其他一些字段打开 read_only (或使它们不可编辑),但仅适用于更新操作。

我用谷歌搜索了 django rest 框架文档,但没有此类自定义验证器的明确示例。

现在,我的解决方法是设置 required=false总而言之,这不是最好的。

请指教。

最佳答案

您可以覆盖 get_fields serializer 的方法然后您可以更改该字段的值

class SomeDataSerializer(serializers.ModelSerializer):
some_field = serializers.CharField(max_length=100)

def get_fields(self, *args, **kwargs):
fields = super(SomeDataSerializer, self).get_fields(*args, **kwargs)
request = self.context.get('request', None)
if request and getattr(request, 'method', None) == "POST":
fields['some_field'].required = False
return fields

关于Django Rest 框架 : how to make field required/read-only only for update actions such as PUT and PATCH?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53735960/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com