Почему 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'.

Есть две вещи

  1. Blank
  2. null

если blank - true, то при заполнении формы мы можем игнорировать это поле

если null равен true, это означает, что при вставке записи в БД, если мы не передаем это заполненное значение, то по умолчанию django поместит туда null.

В вашем случае blank является false, это означает, что в пользовательском интерфейсе админ-панели необходимо указать какое-то значение для имени. Это не даст никакой ошибки, если мы изменим blank=True в модели

Вернуться на верх