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

Neo*_*ang 19 python django django-models django-migrations

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

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

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

PS我知道我可以向后迁移到001,但是在我进行003迁移并执行迁移命令之后,001到003将全部应用,对吧?

kar*_*ikr 43

您可以使用该--fake选项.

一旦你恢复,0001你就可以运行

python manage.py migrate <app> 0002 --fake
Run Code Online (Sandbox Code Playgroud)

然后跑

python manage.py migrate <app> #Optionally specify 0003 explicitly
Run Code Online (Sandbox Code Playgroud)

这只适用0003于这种情况.

如果您不想对所有环境/其他开发人员执行此过程,则可以删除迁移文件,运行新makemigration文件并提交该文件 - 是的,请运行migrate--fake选项


Nag*_*gev 7

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

python manage.py migrate --fake
Run Code Online (Sandbox Code Playgroud)

只是节省了一点打字时间。