如何使用Django migrate命令跳过迁移?

时间:2015-07-12 15:31:32

标签: python django django-models django-migrations

首先,我问的是1.7中引入的Django迁移,而不是south

假设我有迁移001_add_field_x002_add_field_y,并且它们都应用于数据库。现在我改变主意并决定恢复第二次迁移并将其替换为另一次迁移003_add_field_z

换句话说,我想申请001和003,跳过002,我该怎么做?

P.S。我知道我可以向后迁移到001,但是在我进行003迁移并执行migrate命令之后,001到003将全部应用,对吗?

2 个答案:

答案 0 :(得分:39)

您可以使用--fake选项。

一旦恢复为0001,您就可以运行

python manage.py migrate <app> 0002 --fake

然后运行

python manage.py migrate <app> #Optionally specify 0003 explicitly

在这种情况下仅适用0003

如果您不想对所有环境/其他开发人员执行此过程,您只需删除迁移文件,然后运行新的makemigration并提交该文件 - 是的,运行{{ 1}}使用migrate选项

答案 1 :(得分:2)

不适用于此特定情况,但如果想要或需要跳过所有未应用的迁移,可以使用此方法:

python manage.py migrate --fake

只需保存一点打字。