Nullable DecimalField在空白时返回'此值必须是十进制数'

时间:2011-11-13 19:48:46

标签: python django django-models

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

注意:此字段最初可以为空,但我通过South迁移更改了模型以使字段可为空。我仔细检查了数据库以确认该列是否为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}),
    }

1 个答案:

答案 0 :(得分:8)

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

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