Null
不是空字符串!
select count(*) from table where xyz is null
和select count(*) from table where xyz == ''
不一样!
如果我对列有唯一的约束,则可以存在多个 NULL 值。多个空字符串不能!
我知道有什么区别。我不需要解释。我想知道的只是如何在 Django 管理员中插入NULL
值。
我试过:
default=None
null=True
不,我不要blank
.我要NULL
.
当我查看迁移中的架构时,我清楚地看到列允许NULL
。
那么,动态类型python中繁琐的小语法是什么,似乎被那些不了解约束是什么的人的SEO所困扰?
此字段为必填字段。
不,不是。我可以从表格结构中清楚地看到这一点。
你还必须提供blank=True
,所以 django admin 将允许你设置空字符串。
例如,我在这个模型上测试了它:
class NullFieldModel(models.Model):
title = models.CharField(max_length=100, null=True, default=None, blank=True)
它与SQLite一起工作。以下查询用新模型回复我:
SELECT * FROM testapp_nullfieldmodel WHERE testapp_nullfieldmodel.title IS NULL
当 Django 向 MySQL 发送 NULL 字段的更新时,它不会将其作为 NULL 插入(当您在管理员中时(。
例如您有一个openid_key字段,它是用户 openid url 的 url。此 URL 必须是唯一的,并且应
标记为唯一的数据库完整性。您进入管理员并编辑用户,他们没有openid_key。你保存用户,一切都很好。
您进入管理员并编辑其他用户,他们没有openid_key,您保存用户。SQL抛出了一个关于键需要是唯一的契合。
Django 试图在这个字段中插入 " 而不是 NULL。