Django CharField принимает пустые значения, когда это не должно - PullRequest
0 голосов
/ 21 мая 2019

У меня есть следующая модель:

class ClientDebt(models.Model):
    client_id = models.CharField(max_length=255)
    ...

Я ожидал, что эта модель предотвратит записи без client_id, но я совершенно не понимаю, почему я могу создать ClientDebt без client_id с помощью оболочки django(python manage.py shell_plus).

Изменение его на CharField(max_length=255, null=False, blank=False) и попытка создать + выполнить новые миграции также не сработало, так как Django не обнаружил никаких изменений.Нет значения по умолчанию из того, что я мог видеть в предыдущих миграциях, но, похоже, в поле записывается «» (пустая строка).

Кто-нибудь может мне сказать, что происходит?Почему моя модель принимает нулевые / пустые значения?Может ли это быть ошибкой в ​​Django?Я использую Django версии 2.2.1

Ответы [ 3 ]

0 голосов
/ 21 мая 2019

Вы можете установить default = '' на свои поля

0 голосов
/ 12 июля 2019

Посмотрите на этот ответ :

class ClientDebt(models.Model):
    client_id = models.CharField(max_length=255, blank=False, default=None)
    ...
  • blank не даст пустую строку в вашей модели
  • default=None установит имя в None при использовании чего-то вроде group = Group(), что вызовет исключение при вызове save

Кроме того, вы можете взглянуть на MinLengthValidator .

0 голосов
/ 21 мая 2019

blank используется только с проверкой формы.Если у вас есть записи, созданные с пустыми значениями, вам нужно написать несколько пользовательских проверок, чтобы предотвратить это.

...