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 по умолчанию.

Вернуться на верх