在Django REST中存储BooleanField()和IntegerField()的默认值

在Django REST中存储BooleanField()和IntegerField()的默认值,django,django-rest-framework,Django,Django Rest Framework,我知道根据文档,以下字段不接受allow\u blank=True和allow\u null=True BooleanField() IntegerField() 我需要允许客户端不指定g或d(如下所示),并将值存储在数据库中为None g = serializers.BooleanField() d = serializers.IntegerField() 有什么想法吗?Django Rest Framework序列化程序有initial选项来设置字段的dafault值 g = seria

我知道根据文档,以下字段不接受
allow\u blank=True
allow\u null=True

BooleanField()
IntegerField()
我需要允许客户端不指定g或d(如下所示),并将值存储在数据库中为
None

g = serializers.BooleanField()
d = serializers.IntegerField()

有什么想法吗?

Django Rest Framework序列化程序有
initial
选项来设置字段的dafault值

g = serializers.BooleanField(initial=True)
d = serializers.IntegerField(initial=0)

处理空字段、空白字段和空字段的不同选项(必然)有点微妙,因此有时会绊倒人们也就不足为奇了

我知道根据文档,以下字段不接受allow\u blank=True和allow\u null=True

这是不正确的:

  • IntegerField(allow\u null=True)
    有效
  • 如果要允许布尔字段输入为空,则需要使用
    NullBooleanField()
这两种方法都不接受
allow_blank
,因为空字符串在这两种情况下都不是有效值


我需要允许客户端不指定g或d(如下所示),并将值存储在DB中为None

您可以使用
IntegerField(默认值=None)
NullBooleanField(默认值=None)

在这种情况下,如果省略这些值,它们将作为
None
包含在
serializer.validated\u data
中。您需要确保在模型字段上使用
null=True
/
NullBooleanField

整型字段(必需=False)
空布尔字段(必需=False)

在这种情况下,如果省略这些值,它们将不会包含在序列化程序中。已验证的\u数据中,并且将使用模型字段默认值。您需要确保在模型字段上使用
default=None
null=True
/
NullBooleanField


请注意,使用可浏览的API清空HTML输入中的字段时存在错误。这一点已在中得到解决


Edwin的答案中建议的
initial
参数也很有用,但用于设置要在HTML表单字段中最初呈现的值。

是否将此存储为
True
0
而不是所问的
None
?我确实尝试了您的建议,但即使我将d设置为0,然后我仍然得到一个错误。有没有更多的信息,你想在任何一个答案?