Почему django создает пустое поле?
Здравствуйте, у меня есть простая модель:
class Company(models.Model):
name = models.CharField(max_length=150, unique=True, blank=False)
fullname = models.CharField(max_length=250, blank=True, null=True)
description = models.TextField(blank=True, null=False)
...
И я создал простой тест:
...
def test_create_company_fail_name(self):
""" Why create empty name Models!"""
payload = {
'fullname': 'Test2Django',
'description': 'Simple test',
'country': 'Poland',
'city': 'Gdynia'
}
company = Company.objects.create(**payload)
self.assertEqual(Company.objects.count(), 1)
Почему django создает модель, если не получил поле 'name'? Но когда я создаю модель в разделе администратора, то получаю ошибку 'Field is require'.
Есть две вещи
- Blank
- null
если blank - true, то при заполнении формы мы можем игнорировать это поле
если null равен true, это означает, что при вставке записи в БД, если мы не передаем это заполненное значение, то по умолчанию django поместит туда null.
В вашем случае blank является false, это означает, что в пользовательском интерфейсе админ-панели необходимо указать какое-то значение для имени. Это не даст никакой ошибки, если мы изменим blank=True в модели