繁体   English   中英

如何在Django中使用South将数据从一个模型迁移到另一个模型?

[英]How do I migrate data from one model to another using South in Django?

我创建了一个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()表示法有效。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM