卸载应用程序会中断旧迁移

时间:2016-06-02 14:28:49

标签: django django-migrations

我已经停止使用我不再需要的第三方应用,因此我已经从我的virtualenv中卸载了。但是,这会导致所有引用该应用程序模型的旧迁移在迁移时失败。

from menu.models import MenuItem
ImportError: No module named menu.models

我能想到的唯一两个选项是要么安装第三方应用程序以满足迁移要求,要么编辑旧迁移以删除对现已解散的应用程序的引用。

似乎都不理想。还有其他我没想过的方式吗?

1 个答案:

答案 0 :(得分:0)

根据Django Migrations Historical Models文档:

  

...模型的基类只是作为指针存储,所以你   必须始终保持基类,只要有一个   包含对它们的引用的迁移。

因此,您应该在Virtualenv中保留历史应用程序,直到删除引用历史模型的迁移文件为止。 删除迁移文件的方法是:

  1. Squashing Migrations
  2. 删除数据库中的迁移文件和迁移记录。 注意:如果您不确定自己在做什么,请不要这样做,请查看此答案以获取更多信息:How to reset migrations in Django 1.7?