Каков наилучший способ создания экземпляра модели django с модельной формой, в которой для некоторых полей установлены значения blank и null?
У меня следующая модель:
class Foo(models.Model):
field1 = models.CharField(max_length=100)
field2 = models.ForeignKey(AnotherModel, on_delete=models.CASCADE)
field3 = models.ImageField(blank=True, null=True)
field4 = models.CharField(max_length=15, blank=True, null=True)
А вот мое мнение:
def myView(request):
form = FooForm(request.POST or None)
if form.is_valid():
# What is the best to extract to filled fields by the user
# so that I will know what to pass the objects.create() method
field2 = form.cleaned_data.get('field1) # how to know if that's empty since it is not required
Foo.objects.create(field1="do not want it to be empty" )
Каким образом лучше всего проверить, что значение полей не пусто, и передать его в метод create?
Вы можете либо убрать null=True, blank=True
в полях модели, чтобы сделать их обязательными.
ИЛИ
Вы можете очистить данные, используя пользовательский метод очистки, например
forms.py
from .models import Foo
from django import forms
class FooForm(forms.ModelForm):
# Your code
def clean(self):
cleaned_data = super().clean()
field1 = self.cleaned_data.get('field1')
if field1 == "":
raise ValidationError(
f"field1 is empty"
)
Эта ошибка наблюдается в верхней части формы с тегом шаблона {{ form.non_field_errors }}.