Django:ForeignKey 的值可以是 None 吗?
Posted
技术标签:
【中文标题】Django:ForeignKey 的值可以是 None 吗?【英文标题】:Django: Can the value of ForeignKey be None? 【发布时间】:2011-01-13 23:14:04 【问题描述】:我有一个名为 SimplePage
的模型,其中有这行:
category = models.ForeignKey('Category', related_name='items',
blank=True, null=True)
我认为这将允许我拥有没有类别的 SimplePage 实例。
但由于某种原因,当我尝试在管理员中创建一个没有类别的 SimplePage 时,我得到:
IntegrityError at /admin/sitehelpers/simplepage/add/
sitehelpers_simplepage.category_id may not be NULL
这是什么?
【问题讨论】:
【参考方案1】:可能是您在为该模型执行syncdb
之后添加了null=True
属性? Django 不会更改数据库表,只会创建它们。如果该列允许NULL
,请检查您的数据库并手动更改它。
编辑:从 Django 1.7 开始,这个答案和 cmets 不再有效,因为 Django 获得了功能齐全的 migration framework。
【讨论】:
记住孩子们:Django 只会创建不存在的表或列。它永远不会为你改变一张桌子。任何反映模型更改所需的表更改都必须由您手动完成! 我实际上运行了 syncdb 并没有帮助。有效的方法是删除数据库,然后执行同步数据库。 @cool-RR,synack 关于syncdb 创建但不修改表的评论让你很吃惊。 我希望 syncdb 对此给出警告。 那里是不是说syncdb不会给出警告?以上是关于Django:ForeignKey 的值可以是 None 吗?的主要内容,如果未能解决你的问题,请参考以下文章
是否可以访问由 ForeignKey Django 连接的不同表的值
Django:如何向后跟随 ForeignKey('self')