所以我有给定的模型:
class FooBar(models.Model):
foo = models.ForeignKey(Foo,null=True,blank=True)
bar = models.ForeignKey(Bar,null=True,blank=True)
foo_flag = models.BooleanField(default=False)
bar_flag = models.BooleanField(default=False)
逻辑是,在任何时候,都可以有Foo
或Bar
的外键,而不是两者。但是现在逻辑已经改变,所以总是有{{1外键,有时是Foo
。所以我的新模型看起来像这样:
Bar
现在这是复杂的部分。 class FooBar(models.Model):
foo = models.ForeignKey(Foo)
bar = models.ForeignKey(Bar,null=True,blank=True)
bar_flag = models.BooleanField(default=False)
模型看起来如此:
Bar
因此,对于class Bar(models.Model):
foo = models.ForeignKey(Foo)
字段为foo
的数据库中的每个以前存在的项目,因此存在null
的外键,我需要Bar
字段获取具有foo
字段对象具有外键的同一Foo
对象的外键。这是逻辑上的结论:
bar
FooBar.foo_flag
个对象填充所有null foo
个外键
Foo
外键Bar
字段我怎样才能编写此迁移?
答案 0 :(得分:2)
此类情况的最佳做法是进行3次独立迁移:
迁移后,我建议检查假 Foo 对象链接表,并在出现问题时手动修复数据。