Nullable DecimalField возвращает «Это значение должно быть десятичным числом», когда пусто - PullRequest
2 голосов
/ 13 ноября 2011

В моей модели есть поле типа DecimalField. Несмотря на то, что у меня есть blank=True и null=True в опциях, когда моя модель проходит проверку формы и это поле пустое, я получаю сообщение об ошибке «Это значение должно быть десятичным числом». Может ли DecimalField быть нулевым? Я мог бы установить значение по умолчанию 0 для этого поля, но я бы предпочел оставить его обнуляемым.

ПРИМЕЧАНИЕ. Изначально это поле имело значение , а не , которое можно было бы обнулять, но я изменил модель с помощью миграции на юг, чтобы сделать поле обнуляемым. Я дважды проверил базу данных, чтобы убедиться, что столбец имеет значение 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 Ответ

8 голосов
/ 17 ноября 2011

Ваш forms.CharField вернет пустую строку, а не None (Python's NULL). Поэтому он пытается установить для столбца значение '' (пустая строка), а не NULL.

Вам, вероятно, следует использовать django.forms.DecimalField в форме. Смотри https://docs.djangoproject.com/en/dev/ref/forms/fields/#decimalfield

...