使用一个django应用程序将模型迁移到其他几个应用程序

时间:2013-10-09 10:13:40

标签: python django django-models django-south data-migration

我有一个django应用程序,由17个模型组成。现在我已经意识到这些模型应该在3个不同的应用程序中(不在原始应用程序中)。所以现在我想将这些模型从原始应用程序迁移到这3个不同的应用程序。我该怎么做?

模型之间存在外键,通用外键和ManyToMany关系。我也有数据库中的数据(MySql),所以我希望在迁移过程中保留数据。

我已安装南部进行迁移,但不知道如何使用它来解决此问题。我已经完成了这个similar question,但找不到可以解决我问题的答案。感谢任何帮助!

1 个答案:

答案 0 :(得分:2)

在我看来,您有两种完成此任务的方法,如下所述:

  1. 移动模型并添加Meta.db_table以根据需要引用现有的sql表,如@kroolik建议
  2. 执行三步迁移
  3. 前者更容易,而后者可能会更好,因为表格会按照您的预期命名。

    首先,你提到你已经安装了南方。第一步是为现有应用程序创建初始迁移。看看to the south tutorial。然后,您必须应用该迁移,但由于您已经拥有db中的表,除非包含--fake标志,否则它将失败。

    之后,您需要创建您提及的三个应用及其模型。同时创建并应用(这次没有假标志)初始迁移。

    下一步是编写数据迁移。您必须手动编写它,但您可以使用datamigration创建骨架。您必须“手动”编写迁移。

    现在你差不多完成了,唯一剩下的就是删除原始表。您可以删除这些模型,并创建“自动”模式迁移。

    不要忘记使用migrate命令应用迁移。另外,@ Bibhas提到了数据库的副本和/或它的转储是个不错的主意。