【问题标题】:What is the best approach for migrating one Django app to another将一个 Django 应用程序迁移到另一个应用程序的最佳方法是什么
【发布时间】:2012-02-10 10:56:11
【问题描述】:

我正在处理一个 Django 项目,我必须使用 South 将一个应用程序迁移到另一个应用程序。我有旧的内部消息应用程序,我必须用另一个完全不同的方法替换它。我想知道我是否可以通过 orm,但是 INSTALLED_APPS 中不再存在旧应用程序,所以没有意义。使用 SQL 过程是否可以做到这一点?我当时想保持应用程序数据库类型独立。

【问题讨论】:

  • 它们是否共享相同的表结构?如果没有,您可能会使用 django ORM 编写 python 级别的脚本,或者根据您使用的数据库尝试一些 SQL 迁移
  • 事实上,我必须从旧应用程序的模型中获取一些值,这些值将不再存在于 INSTALLED_APPS 中。我想我会用sql,没办法。谢谢
  • 如果您找到任何可以帮助您的库或东西,请在完成解释您如何解决问题后自己写下问题的答案!

标签: django django-models django-south


【解决方案1】:

Django 应用程序在数据库中命名空间,因此您应该能够临时安装这两个应用程序。我会将其分解为大约三个迁移:

  1. 用于添加新应用程序的架构迁移。如果其他应用程序需要与新应用程序具有外键关系,请添加这些并确保它们都可以为空。
  2. 在旧应用程序中遍历模型对象并在新应用程序中创建等效对象的数据迁移。
  3. 用于删除旧应用程序的架构迁移。

【讨论】:

  • 感谢您的回答,一致且有用!
【解决方案2】:
  1. schemamigration:python manage.py schemamigration myapp(带有可为空的外键)

  2. 数据迁移:Django 自定义 sql 是我的朋友 -> https://docs.djangoproject.com/en/dev/topics/db/sql/ 使我的自定义数据迁移脚本保持项目数据库独立

  3. 使用 2 删除旧的应用程序架构。

  4. (可选)反向救援脚本

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-09-18
    • 1970-01-01
    • 2017-12-10
    • 1970-01-01
    • 1970-01-01
    • 2010-11-18
    相关资源
    最近更新 更多