Думаю проблема в том, что вы не проверяли на None
, но тем не менее. Я думаю, ты сам стараешься слишком много работать. Вы можете просто указать, что это поле required=True
[Django -doc] , это будет:
По умолчанию каждый класс поля предполагает значение является обязательным, поэтому, если вы передадите пустое значение - либо None
, либо пустую строку (""
) - тогда clean()
вызовет исключение ValidationError
.
Таким образом, мы можем сделать поля обязательными с помощью:
class CreateForm(forms.ModelForm):
category = forms.CharField(<b>required=True</b>, max_length=50)
item_name = forms.CharField(<b>required=True</b>, max_length=50)
class Meta:
model = Device
fields = ['category', 'item_name', 'quantity']
При этом довольно "странно" указывать blank=True
[Django -doc] , поскольку это фактически означает, что поле не требуется в модельных формах. blank=True
не означает, что пустая строка разрешена, поскольку даже с blank=False
вы можете хранить пустые строки в поле. A ModelForm
будет определять (большую часть) свою валидацию на основе модели, которую он «обертывает», поэтому это означает, что если вы определите модель лучше, вы удалите много шаблонного кода. Поэтому я бы посоветовал исключить blank=True
.