我创建了一个Django应用程序,该应用具有自己的内部投票系统和一个名为投票的模型来跟踪它。我想将投票系统重构为自己的应用程序,以便我可以重复使用。但是,原始应用程序正在生产中,我需要创建一个数据迁移,该数据迁移将对所有投票进行,并将其移植到单独的应用程序中。

如何获得两个应用程序来参与迁移,以便我可以访问他们的两个模型?不幸的是,原始应用程序和独立应用都有一个名为“投票”的模型,因此我需要意识到任何冲突。

有帮助吗?

解决方案

你有没有尝试过 db.Rename_table?

我将首先在看起来像这样的新应用或旧应用中创建迁移。

class Migration:

    def forwards(self, orm):
        db.rename_table('old_vote', 'new_vote')    

    def backwards(self, orm):
        db.rename_table('new_vote', 'old_vote')

如果那不起作用,您可以在循环中使用这些行迁移每个项目:

def forwards(self, orm):
    for old in orm['old.vote'].objects.all():
        # create a new.Vote with old's data
models = {
    'old.vote' = { ... },
    'new.vote' = { ... },
}

注意:您必须使用 orm[...] 访问当前正在迁移的应用程序之外的任何模型。否则,标准 orm.Vote.objects.all() 符号有效。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top