删除 Django 应用程序的正确方法是啥?
Posted
技术标签:
【中文标题】删除 Django 应用程序的正确方法是啥?【英文标题】:What's the proper way to remove a Django app?删除 Django 应用程序的正确方法是什么? 【发布时间】:2015-07-27 15:39:43 【问题描述】:我正在清理一个旧项目。该项目已升级到 Django 1.8。该项目有几个根本不再需要的应用程序。我想删除这些应用程序。
问题是您无法通过迁移移除应用,因为其他应用的迁移可能依赖于它们。例如... app car
可以被删除,但 app user
中的模型具有 car
中模型的外键。如果我删除 car
应用程序,那么在运行完整迁移时我会收到错误消息。 user
中的迁移依赖于 car
中的迁移(创建 Car 模型的迁移),它将失败。
我可以返回并编辑 user
迁移以删除 car
的所有实例,就好像它从未存在一样。但是我无法进行删除User
上的car
属性的迁移,因此该列将仅保留在数据库表中(即使它不再使用)。
我应该如何删除这个应用程序而不会使我的迁移变得笨拙并留下旧的列?
【问题讨论】:
我希望这个***.com/questions/3329773/… 【参考方案1】:在我看来,您需要 squash 您的迁移。以下是您可以做什么的概述(仅就迁移而言):
-
添加一个迁移以消除
user
对 car
的依赖关系。
压缩user
应用程序的迁移。
看看新的压缩迁移——如果它优化了外键到car
,那就完美了,否则,手动从压缩迁移历史中删除外键。
使用两个新迁移(删除外键的迁移和压缩的迁移)进行发布。
在升级所有部署后(或经过合理的弃用周期),删除原始的迁移链,只留下压缩的迁移链。
【讨论】:
以上是关于删除 Django 应用程序的正确方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章
在单页应用程序中取消绑定事件侦听器和删除子元素的正确方法是啥?