У меня есть следующая модель в Django 1.5:
class Person(models.Model):
name = models.CharField(max_length=50)
Обратите внимание, что согласно https://docs.djangoproject.com/en/dev/ref/models/fields/ name.blank по умолчанию False, что означает, что он должен быть указан.
Однако я мог бы успешно создать объект Person следующим образом:
Person.objects.create()
Обратите внимание, что имя не указано. Что происходит?
Хорошо, ответ из документов:
Обратите внимание, что это отличается от нуля. null - это чисто связанный с базой данных, в то время как пустой - связанный с проверкой. Если поле имеет пустое value = True, проверка формы позволит ввести пустое значение. Если поле имеет пустое value = False, поле будет необходимо.
Другой улов:
Обратите внимание, что валидаторы не будут запускаться автоматически при сохранении модели, но если вы используете ModelForm, он будет запускать ваши валидаторы в любых полях, которые включены в вашу форму.
Это ваша ответственность за вызов чистых методов перед сохранением, если вы не используете форму.