Django Rest Framework:如何为 PUT 和 PATCH 等更新操作设置字段为必填/只读?

2024-05-06

我有一个 Django 序列化器,它有一个字段,该字段仅适用于 PUT 和 PATCH 等更新操作。但不适用于 POST 等创建操作。

我发现这个类似的SOquestion https://stackoverflow.com/q/30953481/80353但没有关于如何编写自定义验证来检测操作是否用于创建、更新或修补的线索。

同样,我想为其他一些字段打开 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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Django Rest Framework:如何为 PUT 和 PATCH 等更新操作设置字段为必填/只读? 的相关文章

随机推荐