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所累?
此字段为必填项。
不,不是。从表结构中我可以清楚地看到这一点。
答案 0 :(得分:1)
您还必须提供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
答案 1 :(得分:0)
当Django将NULL字段的更新发送到MySQL时,不将其插入为NULL (当您在管理员中时)。
例如 您有一个openid_key字段,它是用户openid URL的URL。该URL必须是唯一的,并且应标记为db完整性。
您进入管理员并编辑用户,他们没有openid_key。保存用户,一切正常。
您进入管理员并编辑其他用户,他们没有openid_key,请保存用户。 SQL认为密钥必须唯一。
Django尝试为此字段插入“”而不是NULL。