Django REST将空替换为defau

2024-06-25 23:50:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经设置了一个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}]

Tags: django方法程序restapifalsetrue序列化class
1条回答
网友
1楼 · 发布于 2024-06-25 23:50:16

出现此错误是因为0不是十进制。 尝试default=0.0default=None

更新

An example incomplete request would look like:

[{"myfield0":3, "myfield1":""}, {"myfield0":4, "myfield1":5}]

这里的问题是您将myfield1作为空字符串"myfield1": ""提供。你的请求应该是这样的。在

[{"myfield0":3}, {"myfield0":4, "myfield1":5}]

如果myfield1没有值,请不要将其放入请求中。否则,您必须提供至少与类型匹配的数据。因为当字段不为空时,DRF会对其进行验证,default只在提交的请求中没有字段值时使用。在

{a1}

相关问题 更多 >