Пустое поле некорректно работает в модели Django - PullRequest
1 голос
/ 19 июня 2020

У меня есть модель Django, описанная следующим образом:

class Building(models.Model):
    name = models.CharField(max_length=25,unique=True,blank=False)
    country = models.CharField(max_length=20,blank=False)
    city = models.CharField(max_length=20,blank=False)

    def __str__(self):
        return self.name

Все поля обязательны, так как для каждого поля установлено значение False, но все же я могу сохранять объекты для этого модель, оставив город и страну пустыми.

1 Ответ

1 голос
/ 19 июня 2020

blank=True принудительно применяется на уровне ModelForm, как указано в документации в параметре blank=… [Django -doc] :

Обратите внимание, что это отличается от null. null относится исключительно к базе данных, а blank - к проверке. Если в поле указано blank=True, проверка формы позволит ввести пустое значение. Если в поле указано blank=False, поле будет обязательным.

Таким образом, ModelForm, использующий эту модель, вызовет ошибки, если вы не введете значение для name, city и country. Но не модельный слой. Фактически уровень модели не проверяет любые ограничения, если вы не вызываете .clean() или база данных не отклоняет значения.

...