Django CharField等于评估值

时间:2018-07-26 06:18:49

标签: django django-models

我有一个像Field这样的模型 key = CharField(max_length=100, blank=True)

当我像这样提交表单后检查值时。

if self.key is None: 条件失败

但是当我检查if self.key == ''时,它可以工作。

我的问题是为什么当我将其评估为None时它不起作用,而当我使用''时它却起作用。

仅当我分配像这样的值时,None条件才起作用。 key = CharField(max_length=100, null=True ,blank=True)

我读了一些帖子,其中指出在将CharField评估为blank=True时,会保存一个空字符串'',但是他们并没有阐明这样做的原因。因为据我所知它应该保存一个Null值。

1 个答案:

答案 0 :(得分:1)

null = True

关于数据库,这意味着您可以从模型中获得一个对象,该字段的值为null。

blank= True

与Django表单有关,意味着当您填充此模型的modelForm时,您可以传递空字符串,而不必在表单中填充此字段。

因此,当为数据库中没有密钥值的对象添加null = True时,密钥为null,因此if self.key is None可以工作,但是当您为数据库中的对象删除此选项时没有密钥值的数据库,密钥为'',因此您的条件不是True。