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

时间:2015-05-15 16:13:18

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

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

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

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

如果不加入迁移并留下旧列,我该如何删除此应用?

1 个答案:

答案 0 :(得分:3)

听起来我需要squash您的迁移。以下是您可以做的事情的概述(仅就迁移而言):

  1. 添加迁移,删除usercar的依赖关系。
  2. 压缩user app。
  3. 的迁移
  4. 查看新的压缩迁移 - 如果它将外键优化到car,那就完美了,否则,手动从压缩的迁移历史记录中删除外键。
  5. 使用新迁移(删除外键以及压缩外键)进行发布。
  6. 在升级所有部署之后(或在合理的弃用周期之后),删除原始的迁移链,只留下被压扁的迁移链。