我south
用来管理迁移,我遇到了一个角落。基本上我有以下设置:
应用程序1:
class A(models.Model):
# bunch of attributes
应用程序2:
class B(models.Models):
instance_a = models.OneToOneField(A, null=True, blank=True,
editable=False)
现在,我想从这个到这个:
应用程序1:
class A(models.Model):
instance_b = models.ForeignKey(B, null=True, blank=True)
应用程序2:
class B(models.Models):
# other attributes
我的主要问题是我不能丢失数据。因此,基本上在迁移结束时,之前映射到对象 B 的所有对象 A 都应该保留该映射。例如,如果将 id 为 7 的对象 A 映射到 id 为 8 的对象 B,则在此过程结束时应保留此映射。
我尝试了从模式迁移与临时占位符和数据迁移混合的几件事。但是,我最终总是在同一个地方,即在执行数据迁移时,我不再具有以前的关系以访问正确的属性。例如,B.instance_a 不再可用。
我想听听你对两件事的看法:
- 首先,仅使用南迁移是否可行。
- 其次,我该如何进行。
谢谢