如何在从一对一移动到一对多时执行数据迁移

时间:2012-07-13 13:06:31

标签: python django django-models django-south

我正在使用south来管理迁移,而且我已经到了一个角落。基本上我有以下设置:

App1的

class A(models.Model):
  # bunch of attributes

App2的

class B(models.Models):
  instance_a = models.OneToOneField(A, null=True, blank=True, 
                                    editable=False)

现在,我想从此走向:

App1的

class A(models.Model):
  instance_b = models.ForeignKey(B, null=True, blank=True)

App2的

class B(models.Models):
  # other attributes

我的主要问题是我无法丢失数据。因此,基本上在迁移结束时,先前映射到对象B的所有对象A应保持该映射。例如,如果ID为7的对象A映射到ID为8的对象B,则应在此过程结束时保留此映射。

我尝试了一些与临时占位符和数据迁移混合的模式迁移。但是我最终总是在同一个地方,这是在执行数据迁移时我不再拥有先前的关系以便访问正确的属性。例如,B.instance_a不再可用。

我希望你对两件事有所了解:

  • 首先,只使用南方迁移是否可行。
  • 其次,我该怎样继续。

由于

0 个答案:

没有答案