首先,我问的是1.7中引入的Django迁移,而不是south
。
假设我有迁移001_add_field_x
,002_add_field_y
,并且它们都应用于数据库。现在我改变主意并决定恢复第二次迁移并将其替换为另一次迁移003_add_field_z
。
换句话说,我想申请001和003,跳过002,我该怎么做?
P.S。我知道我可以向后迁移到001,但是在我进行003迁移并执行migrate命令之后,001到003将全部应用,对吗?
答案 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
只需保存一点打字。