【问题标题】:Django: Migrations depend on removed 3rd-party moduleDjango:迁移依赖于删除的 3rd-party 模块
【发布时间】:2015-03-12 15:31:29
【问题描述】:

在我的 django 项目中,我一直在使用 django-taggit 为模型添加标记功能。

添加标签的迁移还将初始的taggit迁移列为依赖项:

dependencies = [
    ('taggit', '0001_initial'),
    # …
]

稍后,我已将 taggit 全部删除,包括 INSTALLED_APPS

问题是 django 无法解析属于 taggit 的迁移,并引发错误。

在这种情况下,首选的解决方案是什么?

我可以想到一个两步策略:

  1. taggit 保留在 INSTALLED_APPS 中,直到运行该项目的所有服务器都是最新的
  2. 之后压缩迁移,使该字段不再显示,然后才从 INSTALLED_APPS 中删除 taggit

【问题讨论】:

    标签: python django django-migrations


    【解决方案1】:

    这差不多。请注意,在创建压缩迁移之前,您不必等待所有服务器都是最新的。来自the documentation

    这些文件被标记为它们替换了以前压缩的迁移,因此它们可以与旧的迁移文件共存,并且 Django 将根据您在历史记录中的位置智能地在它们之间切换。

    对于最后一步,您甚至可以删除旧的迁移文件,因此您的源代码中的任何地方都不会再提及taggit

    然后,您必须通过以下方式将压缩的迁移转换为正常的初始迁移:

    • 删除它替换的所有迁移文件

    • 删除压缩迁移的 Migration 类中的 replaces 参数(这是 Django 告诉它是压缩迁移的方式)

    【讨论】:

      猜你喜欢
      • 2016-05-07
      • 2020-07-30
      • 2012-11-22
      • 2013-06-07
      • 1970-01-01
      • 2023-04-06
      • 1970-01-01
      • 2018-10-19
      • 2016-04-20
      相关资源
      最近更新 更多