列包含空值

column contains null values

我将 Person 作为外键添加到 CareerHistory table。

    person = models.ForeignKey(
    Person, on_delete=models.PROTECT, default=None, related_name='careerist')

我设置了 default=None 认为这可以避免 运行 迁移时关于在现有 table 上创建新字段而没有默认值的错误。然而,我却得到了

django.db.utils.IntegrityError: column "person_id" contains null values

现在,那个 table 中只有 114 个人,而且 所有 都有 id,所以我觉得这个错误很混乱。我看了这个答案:

并决定尝试:

            person = models.ForeignKey(
    Person, on_delete=models.PROTECT, default='', related_name='careerist')

然而,仍然返回同样的错误。 然后我去了:

            person = models.ForeignKey(
    Person, on_delete=models.PROTECT, default='', null=True, related_name='careerist')

但是我仍然得到同样的错误。我不明白这里发生了什么。有人可以解释一下,并告诉我如何解决这个问题吗?我不想只是修复它,我想了解这里发生了什么。也许我需要编辑我的迁移文件?谢谢。

问题是您添加了字段,但不允许 null。通过添加 null=True,您应该可以在迁移过程中解决问题。

person = models.ForeignKey(
    Person, 
    on_delete=models.PROTECT, 
    null=True,
    default=None, 
    related_name='careerist'
)

there are 114 Persons in that table, and all of them have ids, so I find this error very confusing

所以当你添加这个栏目时,数据库不知道哪个职业属于哪个人。所以你必须实现一个数据库迁移来连接这两个。

数据迁移后,可以删除 null=True, default=None