我创建了一个 Django 应用程序,它有自己的内部投票系统和一个名为 Vote 的模型来跟踪它。我想将投票系统重构为自己的应用程序,以便我可以重用它。但是,原始应用程序正在生产中,我需要创建一个数据迁移,它将获取所有投票并将它们移植到单独的应用程序中。
如何让两个应用程序参与迁移,以便我可以访问它们的两个模型?不幸的是,原始应用程序和单独的应用程序现在都有一个名为 Vote 的模型,所以我需要注意任何冲突。
我创建了一个 Django 应用程序,它有自己的内部投票系统和一个名为 Vote 的模型来跟踪它。我想将投票系统重构为自己的应用程序,以便我可以重用它。但是,原始应用程序正在生产中,我需要创建一个数据迁移,它将获取所有投票并将它们移植到单独的应用程序中。
如何让两个应用程序参与迁移,以便我可以访问它们的两个模型?不幸的是,原始应用程序和单独的应用程序现在都有一个名为 Vote 的模型,所以我需要注意任何冲突。
你试过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()
符号有效。