Django:迁移依赖于已删除的第三方模块

6
在我的Django项目中,我一直使用django-taggit为模型添加标记功能。
添加标记的迁移也列出了初始的taggit迁移作为依赖项:
dependencies = [
    ('taggit', '0001_initial'),
    # …
]

在稍后的时间,我已经删除了taggit,包括INSTALLED_APPS中的所有内容。
问题在于django无法解析属于taggit的迁移,并引发错误。
在这种情况下,首选的解决方案是什么?
我可以想到一个两步策略:
1. 在所有运行该项目的服务器更新之前,保留taggitINSTALLED_APPS中。 2. 然后压缩迁移,以便该字段不再显示,并且只有在此之后才从INSTALLED_APPS中删除taggit
1个回答

7
这就差不多了。请注意,您在创建压缩迁移(squashed migration)之前,并不需要等待所有服务器更新完毕。引自文档:

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

对于最后一步,您甚至可以删除旧的迁移文件,这样源代码中就真的没有的任何提及了:

然后,您必须将压缩迁移转换为正常的初始迁移,具体操作是:

  • 删除所有被其取代的迁移文件

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


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