使用Django积极插入NULL(不为空!)

时间:2019-04-19 04:13:07

标签: django null

Null不是一个空字符串!

select count(*) from table where xyz is nullselect count(*) from table where xyz == ''不同!

如果我对列有唯一约束,则可以存在多个NULL值。多个空字符串不能!

我知道有什么区别。我不需要解释。我只想知道如何在Django管理员中插入 NULL 值。

我尝试过:

default=None
null=True

不,我不要blank。我要NULL

当我从迁移中查看架构时,我清楚地看到这些列允许NULL

那么,动态类型的python有点奇怪的语法是什么,它似乎被不了解什么约束的人的SEO所累?

  

此字段为必填项。

不,不是。从表结构中我可以清楚地看到这一点。

2 个答案:

答案 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。