先前的模型层次结构:
class A(models.Model):
name = models.CharField(max_length=150)
B = models.ForeignKey(B, on_delete=models.CASCADE)
class B(models.Model):
name = models.CharField(max_length=150)
C = models.ForeignKey(C, on_delete=models.CASCADE)
新模型层次结构:
class A(models.Model):
name = models.CharField(max_length=150)
B = models.ForeignKey(B, on_delete=models.CASCADE, null=True)
C = models.ForeignKey(C, on_delete=models.CASCADE, null=True)
class B(models.Model):
name = models.CharField(max_length=150)
只需将外键从模型B移到模型A
我已经对模型进行了更改,并在django应用程序中调整了所有相关查询,但是就如何在不破坏数据的情况下部署这些更改方面,我现在还没有策略,更不用说回滚计划了。 / p>
这些更改可以仅通过迁移来完成,还是会被迫接触sql?
已更新:
在迁移过程中运行这样的内容是否有风险?
def populate_a(apps, schema_editor):
A = apps.get_model('app', 'a')
for record in A.objects.all():
record.c = record.b.c
j.save()