【发布时间】:2019-07-09 15:00:01
【问题描述】:
我最初的想法是,如果对于任何字段null=False,那么如果程序没有为该字段指定值,则会因违反 NOT NULL 约束而引发 IntegrityError。我知道某些字段(例如 CharField)是一个例外,但我通过将 FileField 添加到模型中作为test = models.FileField() 进行了测试,并且没有给它任何输入。保存模型没有引发任何错误。
所以我的问题是,当没有指定值或默认值和null=False 时,哪些模型字段允许程序保存模型?我似乎在网上找不到任何完整的列表。
【问题讨论】:
-
您在保存前是否致电
model.full_clean()? -
@WilliamBright 不,我没有。我不熟悉那个命令,在这种情况下它会做什么?
-
它将在字段和模型中运行验证器,以检查它是否符合您希望数据“成形”的内容。意思是,如果你想要
null = False,那么除非你调用full_clean,否则Django 不会真正验证它。这是过去时代的怪癖。 -
是的,这对我有用,命令给出的消息说 FileField 不能为空,不能为空,即使
null=False。谢谢!
标签: python django django-models