Django:如果未提供 CharField 和 TextField,则不会引发错误



在Django模型中,默认情况下blank=Falsenull=False

class Test(models.Model):
name = models.CharField()

现在我尝试在不提供名称的情况下保存测试

Test.objects.create(pk=1)

现在我期待它应该在说名称是必需"null value in column "name" violates not-null constraint"提出一个例外。而对于其他字段,它将引发一个异常,我们必须提供值

因此,如果我们尝试直接保存模型而不带任何表单,那么 CharField 和 TextField 的一些默认行为是否允许存储空字符串,而不考虑空白和空。

别的东西不对劲。

定义"max_length"属性需要CharFieldTest本不该过makemigrations,却独自一人进入了创造物体的阶段。您是否记得运行迁移?我在测试这个时遇到了那个错误。

以下是 Django 正在运行的原始 SQL 查询(假设您添加了max_length并进行迁移(:

'INSERT INTO "polls_test" ("id", "name") SELECT 4, ''', 'time': '0.007'

显然,如果你故意用.create()创建它,Django 会自行将名称设置为空白。

我确实发现的一件事是,Django 特别希望在 CharField 和 TextField 中避免null,而是空字符串是空值。这可能是该决定的副作用。

最新更新