Django REST空字段问题解决方案

10
有没有一种方法可以让Django REST序列化器允许Boolean和Int字段中的空字段。
class InputAttributes(serializers.Serializer):
    make = serializers.BooleanField(required=False)
    speed = serializers.IntegerField(required=False)
    color = serializers.CharField(required=False,allow_blank=True)

我可以在CharFields中使用allow_blank但不能在其他字段中使用。

基于上述信息,我得到:

A valid integer is required

有什么想法吗?

3个回答

2
"Django REST Framework序列化器字段required=false" 可能会对你有所帮助。
来源:"BooleanField"

BooleanField

布尔值表示。

当使用HTML编码表单输入时,要注意省略一个值将始终被视为将字段设置为False,即使它具有指定为default=True的选项。这是因为HTML复选框输入通过省略值来表示未选中状态,因此REST framework将省略视为空复选框输入。

对应于django.db.models.fields.BooleanField

签名:BooleanField()

NullBooleanField

接受None作为有效值的布尔值表示。

签名:NullBooleanField()

对应于django.db.models.fields.NullBooleanField


1
这可能会更好地解释。https://github.com/tomchristie/django-rest-framework/commit/28ff6fb1ec02b7a04c4a0db54885f3735b6dd43f - Chris Hawkes

1
如果您看到这个问题是因为您想让BooleanField将null作为有效值发送/接收,因为您已经定义了。
null=True, default=None

在您的模型的BooleanField中,然后像这样在您的序列化器中定义该字段:
myBoolField = serializers.BooleanField(allow_null=True, default=None)

一开始我以为这就是 NullBooleanField 的作用,但实际上并不是,我真的不知道它应该做什么。


-6
color = serializers.CharField(null=True,Blank=True)

2
请阅读“撰写完美问题”。在SO上,格式很重要;在编辑文本时,可以使用帮助来展示如何使用它。 “我如何格式化我的帖子…”也会有所帮助。此外,请解释为什么这应该是所选择的解决方案以及它是如何工作的;目标是教育,而不仅仅是抛出代码。 - the Tin Man

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接