【问题标题】:Rest Framework Django - Disable field to accept null valuesRest Framework Django - 禁用字段以接受空值
【发布时间】:2018-01-31 14:34:41
【问题描述】:

Rest Framework Django - 禁用字段以接受空值

如何配置序列化模型以接受空白字段?

警告

{"Operacao": ["This field can not be blank."]}

型号

class SEF(models.Model):
    operacao = models.CharField(max_length=10, null=True)
    documento = models.CharField(max_length=50, null=True)
    user = models.ForeignKey(User)

序列化器

class SEFCreateSerializer(serializers.ModelSerializer):

    class Meta:
        model = SEF
        fields = ('operacao', 'documento', 'user')

查看

sef_create = SEFCreateSerializer(data=data, many=True)
        if sef_create.is_valid():
            sef_create.save()
            salvo = HTTP_200_OK
        else:
            salvo = sef_create.errors

【问题讨论】:

    标签: django django-models django-rest-framework


    【解决方案1】:

    在字段定义中包含 allow_blank=True,如下所示:

    operacao = serializers.CharField(allow_blank=True, allow_null=True)
    

    【讨论】:

      【解决方案2】:
      class SEFCreateSerializer(ModelSerializer):
      
          class Meta:
              model = SEF
              fields = ('operacao', 'documento', 'user')
              extra_kwargs = {'operacao': {'required': False}} 
      

      【讨论】:

      • 使用模型字段非常简单的方法,您不需要更改 requiered=False... 的任何其他内容...非常感谢...
      【解决方案3】:

      你可以设置默认值

      operacao = models.CharField(max_length=10, default=0)
      

      如果你像这样在模型中指定一个字段,如果没有任何内容,它将采用默认值 0。

      或在序列化程序中

      operacao = serializers.CharField(allow_null = True)
      

      【讨论】:

      • operacao = serializers.CharField(allow_null = True) 。 ---- 不工作
      • operacao = models.CharField(max_length=10, default=0) 。 ---- 也不行。
      猜你喜欢
      • 1970-01-01
      • 2016-12-07
      • 2015-09-15
      • 2018-08-07
      • 1970-01-01
      • 2022-08-17
      • 2021-09-03
      • 2013-01-15
      • 1970-01-01
      相关资源
      最近更新 更多