Django: ForeignKey的值可以为None吗?

4 投票
1 回答
6066 浏览
提问于 2025-04-15 18:58

我有一个叫做 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 个回答

9

你是不是在对那个模型执行了 syncdb 之后才加上了 null=True 这个属性?Django 不会自动修改数据库表,只会创建新的表。你可以去数据库里检查一下,看看那个列是否允许为 NULL,如果不允许的话,你需要手动去改一下。

编辑:从 Django 1.7 开始,这个回答和评论就不太适用了,因为 Django 增加了一个功能齐全的 迁移框架

撰写回答