在我的django项目中,我一直在使用 django-taggit 为模型添加标记功能。
迁移添加标记还将初始 taggit 迁移列为依赖项:
dependencies = [
('taggit', '0001_initial'),
# …
]
在以后的某个时间点,我已经删除了 taggit ,包括INSTALLED_APPS
。
问题是django无法解析属于 taggit 的迁移,并引发错误。
此方案中的首选解决方案是什么?
我可以想到一个两步策略:
INSTALLED_APPS
中保留 taggit ,直到所有运行该项目的服务器都是最新的INSTALLED_APPS
答案 0 :(得分:5)
这是正确的。请注意,在创建压缩的迁移之前,您不必等待所有服务器都是最新的。来自the documentation:
这些文件被标记为表示它们取代了以前压缩的迁移,因此它们可以与旧的迁移文件共存,Django将根据您在历史记录中的位置智能地在它们之间切换。
在最后一步中,您甚至可以删除旧的迁移文件,因此您的来源中的任何地方都不会再提及taggit
:
然后,必须通过以下方式将压扁的迁移转换为正常的初始迁移:
删除它替换的所有迁移文件
删除了压缩迁移的Migration类中的替换参数(这就是Django告诉它是一个被压扁的迁移的方式)