【发布时间】:2014-02-21 15:09:37
【问题描述】:
所以我有给定的模型:
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 都可以有一个外键,而不是两者都有。但是现在逻辑已经改变,所以总是有一个 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 字段来获取相同@ 的外键具有bar 字段对象的 987654333@ 对象具有外键。下面是跳出的逻辑:
- 删除
FooBar.foo_flag - 用
Foo对象从Bar外键 -
foo字段中不再允许为空
我该如何编写这个迁移?
【问题讨论】:
标签: python mysql django migration django-south