为什么我要设置外键的默认值,django

Q-b*_*art 1 python django

例如,我们有这样的代码:

class Foo(models.Model):
    a = models.CharField(max_length=10)


class Bar(models.Model):
    b = models.CharField(max_length=10)
    a = models.ForeignKey(Foo)
Run Code Online (Sandbox Code Playgroud)

当我运行 makemigrations 时,我发现我需要设置 a(Bar) 的默认值 谁能解释一下,我为什么要这样做?

谢谢!

Dee*_*ace 5

您的数据库中似乎已经有了一些数据(或者您在添加ForeignKey字段之前进行了迁移)。为了使迁移工作,您需要“告诉”Django对于已经存在的行,表的a列中应该包含哪些数据Bar

要么删除整个数据库/早期的迁移,要么提供您选择的默认值:

a = models.ForeignKey(Foo, default=None) # or any other default value
Run Code Online (Sandbox Code Playgroud)