django - 删除 Django 应用程序的正确方法是什么?

标签 django django-models django-south django-migrations django-1.8

我正在清理一个旧项目。该项目已升级到 Django 1.8。该项目有几个根本不再需要的应用程序。我想删除这些应用程序。

问题是您无法通过迁移删除应用程序,因为其他应用程序的迁移可能依赖于它们。例如...应用程序car可以删除,但应用中的模型usercar 中有一个模型的外键.如果我删除 car app 然后我会在完整迁移运行时收到错误。 user 中的迁移取决于 car 中的迁移(创建 Car 模型的迁移)它将失败。

我可以回去编辑 user迁移以删除 car 的所有实例,就好像它从未存在过一样。但随后我无法进行删除 car 的迁移。属性(property)在 User ,因此该列将仅保留在数据库表中(即使不再使用)。

我应该如何删除这个应用程序而不会使我的迁移中断并留下旧列?

最佳答案

在我看来你需要 squash你的迁移。这是您可以做什么的概述(仅就迁移而言):

  • 添加删除 user 依赖项的迁移在 car .
  • 压制 user 的迁移应用程序。
  • 看看新的压缩迁移——如果它优化了外键到 car离开,这是完美的,否则,手动从压缩的迁移历史中删除外键。
  • 发布两个新迁移(删除外键的迁移以及压缩的迁移)。
  • 在所有部署都升级后(或经过合理的弃用周期后),删除原始的迁移链,只留下被压扁的迁移链。
  • 关于django - 删除 Django 应用程序的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30264152/

    相关文章:

    Django 数据库字符集问题

    python - 导入错误 : cannot import name RemovedInDjango19Warning

    python - 使用 South (Mysql) 在 Django 中迁移问题

    django - 提高 Django PostgreSQL 查询的性能

    django - 使用多个 URL 参数查询 haystack 搜索

    python - Django:如何根据表单的非持久字段自定义保存模型/表单?

    django - 需要使用 Select_lated() 查询集中的数据的帮助

    python - 在convert_to_south之后应用程序显示为 "not synced"

    python - Django South - 从 Python 代码迁移

    javascript - 无法在 Django 模板 html 脚本中将 python 字典用作 JSON