2

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

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

我已经安装了南迁移,但不知道如何使用它来解决这个问题。我已经解决了这个类似的问题,但找不到可以解决我的问题的答案。将不胜感激任何帮助!

4

1 回答 1

2

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

  1. 按照@kroolik 的建议,移动模型并添加 Meta.db_table 以根据需要引用现有的 sql 表
  2. 执行三步迁移

前者更容易,而后者可能会更好,因为表会按照您的预期命名。

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

之后,您需要创建您提到的三个应用程序及其模型。还要为他们创建并应用(这次没有假标志)初始迁移。

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

现在您几乎完成了,唯一剩下的就是删除原始表格。您可以删除这些模型,并创建一个“自动”架构迁移。

不要忘记使用migrate命令应用迁移。同样正如@Bibhas 提到的数据库副本和/或它的转储是一个非常好的主意。

于 2013-10-09T11:48:44.717 回答