【问题标题】:Django REST serializer required fieldDjango REST 序列化程序必填字段
【发布时间】:2019-05-05 09:29:41
【问题描述】:

我有一个带有一个必填字段的简单序列化程序:

class MySerializer(serializers.ModelSerializer):
    class Meta:
        model = MyModel
        fields = '__all__'
        read_only_fields = ('field1', 'field2')

在我的模型中,有一个“url”字段是创建新对象所必需的(方法:POST)。我想为 PUT 方法设置required: False。我怎样才能做到这一点?感谢您提供任何线索...

【问题讨论】:

    标签: django-rest-framework


    【解决方案1】:

    我假设您想要更改/设置现有 MyModel 实例的一个或多个字段。

    在这种情况下,您需要将partial=True 关键字参数传递给序列化程序。然后,即使您 PUT 或 PATCH 数据中没有 url 字段,您的 serializer.is_valid() 也会评估为 True。

    如果我对您的问题的假设是正确的,https://www.agiliq.com/blog/2019/04/drf-polls/#edit-a-poll-question 应该会有所帮助。

    【讨论】:

      【解决方案2】:

      我发现这个答案很有帮助:Django Rest Framework set a field read_only after record is created

          def __init__(self, *args, **kwargs):
              super().__init__(*args, **kwargs)
              if self.instance is not None:
                  self.fields.get('url').read_only = True
      

      这段代码运行良好。

      【讨论】:

        猜你喜欢
        • 2013-11-15
        • 1970-01-01
        • 2014-08-06
        • 2017-03-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-02-07
        • 1970-01-01
        相关资源
        最近更新 更多