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

4

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

问题是,你不能通过迁移来删除具有依赖关系的应用程序。例如,应用程序car可以被删除,但是在user应用程序中的一个模型具有对car应用程序中模型的外键引用。如果我删除car应用程序,则在运行完整迁移时将会出现错误。因为user应用程序中的迁移依赖于car应用程序中的迁移(创建车辆模型的迁移),并且它将失败。

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

我应该如何删除此应用程序,而不会破坏我的迁移并留下旧的列?


2
我希望这个:https://dev59.com/8XA75IYBdhLWcg3wYH3I - Jmint
1个回答

3

听起来你需要压缩你的迁移。以下是你可以做的事情(仅限于迁移):

  1. 添加一个迁移,删除usercar的依赖关系。
  2. 压缩user应用程序的迁移。
  3. 查看新的压缩迁移——如果它优化了到car的外键,那就太好了,否则,请手动从压缩迁移历史中删除外键。
  4. 发布包含新迁移的版本(删除外键和压缩的版本)。
  5. 升级所有部署后(或在合理的弃用周期后),删除原始的迁移链,只留下压缩的迁移。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接