, когда вы создаете объект менеджером (.objects), вы напрямую создаете запрос sql, поэтому у вас нет проверки полей. когда вы создаете / сохраняете объекты с помощью формы django, перед созданием формы проверьте все поля, запустив методы full_clean,
для обеспечения чистой проверки, вы можете добавить full_clean в save, например:
class MyModel(models.Model):
....
def save(self, *args, **kwargs):
self.full_clean() # if error(field cant blank ..ect) raise a ValidationError
super().save(*args, kwargs
вы также можете добавлять ограничения непосредственно в базе данных с помощью таких методов, как:
class MyModel(models.Model):
username = models.TextField()
class Meta:
constraints = [
models.CheckConstraint(check=Q(username__isnull=true), name='username_cant_be_empty') # the username can be empty
]
# when you save this with username empty, integrityError error raised,
подробнее здесь: https://docs.djangoproject.com/fr/3.0/ref/models/constraints/