我已经设置了一个Django restapi,它可以正确地处理有效的传入请求。在一些请求中,有些字段是空的。有没有一种方法可以为序列化程序中的空字段提供默认替换值,以便它们通过验证测试?例如,我有以下序列化程序:
class SearchRequestSerializer(serializers.ModelSerializer):
myfield1 = serializers.DecimalField(max_digits=10, decimal_places=2, coerce_to_string=False, default=0, required=False, allow_null=True)
class Meta:
model = SearchRequest
fields = ('myfield0', 'myfield1')
有时不提供myfield1。如上所示,我尝试将其默认为0,但仍然得到
^{pr2}$我不知道它是否有任何影响,但是我的请求是数组,并且我使用了带有many=True选项的序列化程序。在
不完整请求的示例如下:
[{"myfield0":3, "myfield1":""}, {"myfield0":4, "myfield1":5}]
出现此错误是因为
0
不是十进制。 尝试default=0.0
或default=None
更新
这里的问题是您将
myfield1
作为空字符串"myfield1": ""
提供。你的请求应该是这样的。在如果
myfield1
没有值,请不要将其放入请求中。否则,您必须提供至少与类型匹配的数据。因为当字段不为空时,DRF会对其进行验证,default
只在提交的请求中没有字段值时使用。在{a1}
相关问题 更多 >
编程相关推荐