Django CharField不应接受空值

时间:2019-05-21 00:52:36

标签: python django python-3.x django-models

我有以下模型:

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

我期望这种模型可以防止没有client_id的记录,但是我完全不明白为什么我可以使用Django shell(python manage.py shell_plus)在没有client_id的情况下创建ClientDebt。

将其更改为CharField(max_length=255, null=False, blank=False)并尝试创建并执行新迁移也没有用,因为Django未检测到任何更改。我在以前的迁移中没有看到默认值,但似乎在字段中记录了“”(空字符串)。

有人可以告诉我怎么回事吗?为什么我的模型接受空值/空白值?这可能是Django中的错误吗?我正在使用Django 2.2.1版

3 个答案:

答案 0 :(得分:0)

blank仅用于表单验证。如果您要使用空值创建记录,则需要编写一些自定义检查来防止这种情况。

答案 1 :(得分:0)

看看this answer

class ClientDebt(models.Model):
    client_id = models.CharField(max_length=255, blank=False, default=None)
    ...
  • blank将阻止在模型中提供空字符串
  • default=None将在使用group = Group()之类的名称时将名称设置为None,从而在调用save时引发异常。

或者,您可能想看看MinLengthValidator

答案 2 :(得分:-1)

您可以将default = ''设置为字段