Почему objects.create () завершается с ошибкой? - PullRequest
1 голос
/ 04 апреля 2020

Когда я создаю объект с помощью [model].objects.create() и неправильно устанавливаю одну из переменных поля, создание завершится неудачно. Однако даже при debug=True оно не создает исключение.

Например, следующее молча завершается ошибкой:

Email(models.Model):
   email = models.EmailField()

details = {'email': '1234'} # Fails because it is not a valid EmailField
Email.objects.create(**details)

Почему это так, и когда у меня большая модель с большим количеством полей Как я могу отладить, какое поле не удается?

1 Ответ

1 голос
/ 04 апреля 2020

Он не завершается с ошибкой. Проверки не выполняются при создании или .save() объекта модели по причинам производительности. Вы можете поднять .full_clean() [Django -doc] . Это указано в разделе Проверка объектов документации :

Обратите внимание, что full_clean() не будет вызываться автоматически при вызове модель save() метод . Вам нужно будет вызвать его вручную, если вы хотите запустить одношаговую проверку модели для ваших собственных моделей, созданных вручную.

Поэтому обычно используется ModelForm [Django -doc] , который будет выполнять проверку, вызывая функции очистки. Поэтому они действуют как слой проверки между пользователем и моделями.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...