我有一个像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值。
答案 0 :(得分:1)
null = True
关于数据库,这意味着您可以从模型中获得一个对象,该字段的值为null。
blank= True
与Django表单有关,意味着当您填充此模型的modelForm
时,您可以传递空字符串,而不必在表单中填充此字段。
因此,当为数据库中没有密钥值的对象添加null = True
时,密钥为null
,因此if self.key is None
可以工作,但是当您为数据库中的对象删除此选项时没有密钥值的数据库,密钥为''
,因此您的条件不是True。