Что касается базы данных, она допускает только null / not null , который обрабатывается null=True/False
и по умолчанию False
. blank=True/False
предназначен только для страницы администратора.
Строка ''
не считается пустой, поэтому она принимается базой данных, когда у вас есть ограничение null=False
.
Если вы хотите избежать пустых строк на уровне базы данных, вы можете переопределить save()
в самой модели и вызвать исключение, когда device_serial
установлен на пустую строку, например:
from django.core.exceptions import ValidationError
class Device(models.Model):
device_serial = models.CharField(max_length=36, unique=True)
def save(self, *args, **kwargs):
if self.device_serial == '':
raise ValidationError('device_serial cannot be empty')
super().save(*args, **kwargs)
Теперь, когда вы пытаетесь создать объект с пустой строкой (которая вызывает save()
), возникает следующее исключение:
django.core.exceptions.ValidationError: ['device_serial cannot be empty']