Python 将带有的模型从一个django应用程序迁移到多个其他应用程序
我有一个django应用程序,由17个模型组成。现在我意识到这些模型应该在3个不同的应用程序中(而不是在原来的应用程序中)。因此,现在我想将这些模型从原始应用迁移到这3个不同的应用。我该怎么做 模型之间存在外键、泛型外键和多种关系。我的数据库(MySql)中也有数据,所以我希望在迁移过程中保留这些数据Python 将带有的模型从一个django应用程序迁移到多个其他应用程序,python,django,django-models,django-south,data-migration,Python,Django,Django Models,Django South,Data Migration,我有一个django应用程序,由17个模型组成。现在我意识到这些模型应该在3个不同的应用程序中(而不是在原来的应用程序中)。因此,现在我想将这些模型从原始应用迁移到这3个不同的应用。我该怎么做 模型之间存在外键、泛型外键和多种关系。我的数据库(MySql)中也有数据,所以我希望在迁移过程中保留这些数据 我已经安装了south for migrations,但不知道如何使用它来解决这个问题。我经历过这些,但找不到解决我问题的答案。我会感谢你的帮助 在我看来,您有两种方式完成此任务,如下所述: 根据
我已经安装了south for migrations,但不知道如何使用它来解决这个问题。我经历过这些,但找不到解决我问题的答案。我会感谢你的帮助 在我看来,您有两种方式完成此任务,如下所述:
--fake
标志,否则迁移将失败
之后,您需要创建您提到的三个应用程序及其模型。还要为它们创建并应用(这次没有假标志)初始迁移
下一步是编写数据迁移。尽管可以使用创建骨架,但必须手动编写。您必须“手工”编写迁移
现在您几乎完成了,剩下的唯一一件事就是删除原始表。您可以删除这些模型,然后创建一个“自动”模式迁移
不要忘记使用
migrate
命令应用迁移。另外,正如@Bibhas提到的,数据库的副本和/或转储是一个不错的主意。您可以将它们放在不同的应用程序中,然后使用south进行迁移,还可以编写自定义迁移以保留数据。尝试一下。检查一下。为了安全起见,创建一个数据库副本并处理它。当我创建三个应用程序及其模型时,我保持了原始应用程序的模型不变。将初始迁移应用于三个应用程序之一(通知),我得到一个很长的错误:CommandError:一个或多个模型未验证:Notification.Notification:字段“Notification_from”的访问者与相关字段“User.from”冲突。将相关的\u name参数添加到“not\u from”的定义中。当我对原始应用程序的模型进行注释时,会出现这个错误$python manage.py schemamigration Notification--initial ImportError:cannot import name Notification我猜您有一个循环导入问题。当您从模块B导入模块A和从模块A导入模块B时会发生这种情况。您可以删除导入并在ForeignKey构造函数中使用字符串,如中所述,这不是循环导入问题。问题在于相关的应用程序名称(模型中未提供相关的应用程序名称参数)。我应该为原始应用程序还是三个新应用程序编写数据迁移?数据迁移将用于将一个应用程序转换为三个应用程序。在我看来,最好把它放在原来的应用程序。