【问题标题】:Django REST Empty FieldsDjango REST 空字段
【发布时间】:2015-08-09 06:16:03
【问题描述】:

有没有办法允许在 Django REST 序列化程序中为布尔和 Int 字段使用空字段。

class InputAttributes(serializers.Serializer):
    make = serializers.BooleanField(required=False)
    speed = serializers.IntegerField(required=False)
    color = serializers.CharField(required=False,allow_blank=True)

我可以将 allow_blank 用于 CharFields,但不能用于其他字段。 根据以上我得到,

A valid integer is required

有什么想法吗?

【问题讨论】:

标签: django rest


【解决方案1】:

Django REST Framework serializer field required=false”可能会对您有所帮助。

来源:“BooleanField

布尔字段

布尔表示。

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

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

签名:BooleanField()

NullBooleanField

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

签名:NullBooleanField()

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

【讨论】:

【解决方案2】:

如果您发现这个问题是因为您确实希望 BooleanField 发送/接收 null 作为有效值,因为您已经定义了

null=True, default=None

在您的模型的BooleanField 中,然后在您的序列化程序中定义该字段,如下所示:

myBoolField = serializers.BooleanField(allow_null=True, default=None)

我一开始以为NullBooleanField 是这样做的,但事实并非如此,我不明白它应该做什么。

【讨论】:

    【解决方案3】:
    color = serializers.CharField(null=True,Blank=True)
    

    【讨论】:

    • 请阅读“Writing The Perfect Question”。格式化对 SO 很重要;可以使用帮助来显示如何在编辑文本时使用它。 “How do I format my posts...”也会有所帮助。另外,请解释为什么这应该是选择的解决方案,以及它是如何工作的;目标是教育,而不仅仅是扔掉代码。
    猜你喜欢
    • 1970-01-01
    • 2015-01-16
    • 2018-01-31
    • 1970-01-01
    • 2013-01-15
    • 2021-09-03
    • 2019-05-22
    • 2017-08-29
    • 2015-09-19
    相关资源
    最近更新 更多