2015-01-14 58 views
1

在我的django项目中,我一直在使用django-taggit为模型添加标记功能。Django:迁移依赖于已删除的第三方模块

迁移添加标签也列出了最初taggit迁移的依赖性:

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

在稍后的时间点,我已删除taggit无处不在,包括INSTALLED_APPS

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

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

我能想到两步战略:

  1. 保持taggitINSTALLED_APPS直到运行该项目的所有服务器都是最新
  2. 壁球迁移之后,让现场不显示然后删除taggit from INSTALLED_APPS

回答

1

这就对了。请注意,在创建压缩的迁移之前,您不必等待所有服务器都处于最新状态。从the documentation

这些文件都标说,他们取代先前压扁的迁移,这样他们就可以与老迁移文件并存,Django将它们之间的依赖,你是在历史智能切换。

在最后一步,你甚至可以删除旧的移民文件,因此将真正成为taggit在源的任何地方没有更多提到:

必须再过渡压扁迁移到正常的初始迁移,通过:

  • 删除所有迁移文件它取代

  • 删除被挤压迁移的Migration类中的替换参数(这是Django如何告诉它是被挤压的迁移)