ValueError: Поле 'maca' ожидало число, но получило ''. Ошибка Django
У меня есть такая модель
class Product(models.Model):
class Maca(models.IntegerChoices):
Yes = 1,
No = 2,
maca = models.PositiveSmallIntegerField(
db_column='maca', choices=Maca.choices
)
и такой формы
class ProductForm(forms.ModelForm):
maca = forms.ChoiceField(required=False, choices=Product.Maca.choices, widget=forms.RadioSelect())
У меня есть один случай, когда это поле не отображается на форме.
Но когда его нет в форме, поле 'maca' будет представлено как '' (Blankn), и я получаю ошибку для этого
ValueError: Field 'maca' expected a number but got ''.
Может ли кто-нибудь помочь мне, пожалуйста? Как я могу отправить это в базу данных как значение None?
Поле ModelForm может считаться обязательным или необязательным в зависимости от аргументов полей в модели, как указано в doc.
Если поле модели имеет
blank=True
, то для поля формы required устанавливается значение False. В противном случае,required=True
.
Я бы предложил вам перестроить ваш код таким образом.
app/models.py
class Product(models.Model):
class Maca(models.IntegerChoices):
Yes = 1,
No = 2,
maca = models.PositiveSmallIntegerField(
db_column='maca', choices=Maca.choices, blank=True, null=True
)
app/forms.py
class ProductForm(forms.ModelForm):
maca = forms.ChoiceField(choices=Product.Maca.choices, widget=forms.RadioSelect())
Поле ModelForm считается необязательным, если оно имеет blank=True,
blank,
и null
аргументы False
по умолчанию.