我的模型中有一个字段类型为 DecimalField 。即使我在选项中有 blank=Truenull=True,当我的模型通过表单验证并且该字段为空时,我也会收到错误消息“此值必须是十进制数”。 DecimalField 不能为空吗?我可以为此字段设置默认值 0,但我宁愿让它为空。

注意:该字段最初不可为空,但我通过南迁移更改了模型以使该字段可以为空。我仔细检查了数据库以确认该列具有 Not NULL? = 没有。

这是模型中的字段定义:

reqwest_max = models.DecimalField("Maximum $", max_digits=11, decimal_places=2, blank=True, null=True)

ModelForm 定义是:
class ReqwestDetailsForm(ModelForm):
  details = forms.CharField(widget=forms.Textarea(attrs={'class':'span8'}),
                            label = 'What do you need help with?',
                            required=False)
  reqwest_max = forms.CharField(label = "Will Pay Up To $",
                                required=False)

  class Meta:
    model = Reqwest
    widgets = {
      'tags': TextInput(attrs={'size':75}),
    }

最佳答案

您的 forms.CharField 将返回一个空字符串,而不是 None (Python 的 NULL )。因此它尝试将列设置为 '' (空字符串),而不是 NULL

您可能应该在表单中使用 django.forms.DecimalField。见 https://docs.djangoproject.com/en/dev/ref/forms/fields/#decimalfield

关于python - Nullable DecimalField 在空白时返回 'This value must be a decimal number',我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8114192/

10-15 23:31