Django CharField在不应该接受空值时接受空值

2024-10-04 09:27:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下型号:

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

我原以为这个模型可以阻止没有客户机id的记录,但我不明白为什么我可以使用django shell(python manage.py shell_plus)创建没有客户机id的ClientDebt。你知道吗

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

有人能告诉我发生了什么事吗?为什么我的模型接受空/空白值?这可能是Django的一只虫子吗?我使用的是Django版本2.2.1


Tags: django模型idfalse客户机modelmodels记录
3条回答

看看this answer

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

或者,您可能想看看MinLengthValidator。你知道吗

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

^{}仅用于表单验证。如果您有使用空值创建的记录,则需要编写一些自定义检查以防止出现这种情况。你知道吗

相关问题 更多 >