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

mar*_*lta 2 django django-models django-rest-framework

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

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

警告

{"Operacao": ["This field can not be blank."]}
Run Code Online (Sandbox Code Playgroud)

模型

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

序列化器

class SEFCreateSerializer(serializers.ModelSerializer):

    class Meta:
        model = SEF
        fields = ('operacao', 'documento', 'user')
Run Code Online (Sandbox Code Playgroud)

看法

sef_create = SEFCreateSerializer(data=data, many=True)
        if sef_create.is_valid():
            sef_create.save()
            salvo = HTTP_200_OK
        else:
            salvo = sef_create.errors
Run Code Online (Sandbox Code Playgroud)

Ykh*_*Ykh 8

class SEFCreateSerializer(ModelSerializer):

    class Meta:
        model = SEF
        fields = ('operacao', 'documento', 'user')
        extra_kwargs = {'operacao': {'required': False}} 
Run Code Online (Sandbox Code Playgroud)


小智 6

您可以设置默认值,例如

operacao = models.CharField(max_length=10, default=0)
Run Code Online (Sandbox Code Playgroud)

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

或在序列化器中

operacao = serializers.CharField(allow_null = True)
Run Code Online (Sandbox Code Playgroud)


mar*_*lta 6

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

operacao = serializers.CharField(allow_blank=True, allow_null=True)
Run Code Online (Sandbox Code Playgroud)