Ric*_*ckD 5 django django-rest-framework
我知道根据文档,以下字段不采取allow_blank=True和allow_null=True
BooleanField()
IntegerField()
Run Code Online (Sandbox Code Playgroud)
我需要允许客户端不指定g或d(如下所示)并将值存储在DB中None.
g = serializers.BooleanField()
d = serializers.IntegerField()
Run Code Online (Sandbox Code Playgroud)
有任何想法吗 ?
处理空字段、空白字段和空字段的不同选项(必然)有点微妙,所以它有时会绊倒人们也就不足为奇了。
我知道根据文档,以下字段不采用 allow_blank=True 和 allow_null=True
这是不正确的:
IntegerField(allow_null=True) 已验证。NullBooleanField()该类。您是正确的,他们都没有allow_blank,因为在任何一种情况下,空字符串都不会是有效值。
我需要允许客户端不指定 g 或 d(如下所示)并将该值存储在数据库中为 None。
您可以使用 IntegerField(default=None)和NullBooleanField(default=None)。
在这种情况下,当省略这些值时,它们将被包含None在serializer.validated_data. 您需要确保在模型字段上使用null=True/ NullBooleanField。
或 IntegerField(required=False)和NullBooleanField(required=False)。
在这种情况下,当省略这些值时,它们将不会包含在 中serializer.validated_data,并且将使用模型字段默认值。您需要确保在模型字段上使用default=None和null=True/ NullBooleanField。
请注意,使用 Browsable API 时存在一个错误,即 HTML 输入中的空字段未设置默认值。这在即将发布的 3.1.4 版本中得到解决。
initialEdwin 的回答中建议的参数也很有用,但用于设置初始呈现在 HTML 表单字段中的值。
Django Rest Framework Serializer 具有initial设置字段默认值的选项。
g = serializers.BooleanField(initial=True)
d = serializers.IntegerField(initial=0)
Run Code Online (Sandbox Code Playgroud)
http://www.django-rest-framework.org/api-guide/fields/
| 归档时间: |
|
| 查看次数: |
2241 次 |
| 最近记录: |