删除 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 您的迁移。以下是您可以做什么的概述(仅就迁移而言):

    添加一个迁移以消除 usercar 的依赖关系。 压缩user 应用程序的迁移。 看看新的压缩迁移——如果它优化了外键到car,那就完美了,否则,手动从压缩迁移历史中删除外键。 使用两个新迁移(删除外键的迁移和压缩的迁移)进行发布。 在升级所有部署后(或经过合理的弃用周期),删除原始的迁移链,只留下压缩的迁移链。

【讨论】:

以上是关于删除 Django 应用程序的正确方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章

在单页应用程序中取消绑定事件侦听器和删除子元素的正确方法是啥?

销毁地图实例的正确方法是啥?

在 Vue 中删除 v-for 元素的正确方法是啥?

检索所有包含特定 mixin 的类定义的正确方法是啥?

在 Elixir 1.12 应用程序中启动 `:pg` 的默认范围的正确方法是啥?

在 Django 中检查空查询集的正确方法是啥?