如何在不破坏Django中数据的情况下将外键从一个模型移动到另一个模型?

时间:2018-07-12 22:26:14

标签: django django-models django-migrations

先前的模型层次结构:

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()

0 个答案:

没有答案