Каков наилучший способ создания экземпляра модели 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 }}.

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