使用Django South向后迁移
好的,所以这似乎是一个非常愚蠢的问题,我敢肯定,我错过了某个地方的东西。
如何在Django上使用South进行向后迁移?
所以我调整了我的模型,创build了一个schemamigration
的迁移,通过migrate
运行migrate
,现在我意识到这不是我想要的,我希望它恢复schemamigration
。
没有手动编辑数据库表和删除迁移文件,我应该如何回滚回迁? 我发现通过Google使用South向后迁移的参考,但还没有find一个坚实的代码示例。
谁能帮忙?
您需要确定在您想要回滚之前的迁移数量。
你的应用程序应该有一个迁移目录,其中的文件名为like
0000_initial.py 0001_added_some_fields.py 0002_added_some_more_fields.py 0003_deleted_some_stuff.py
通常,当您运行./manage.py migrate your_app
,South ./manage.py migrate your_app
顺序运行所有新的迁移。 (它看着数据库表来决定哪些是新的)。
但是,您也可以指定通过编号进行的任何迁移,South将向前或向后迁移数据库,以便将其转移到该点。 所以,通过上面的示例文件,如果您已经迁移到0003,并且您想要反向运行0003(有效地撤消它),您可以运行
./manage.py migrate your_app 0002
South会查看数据库,意识到它已经运行了0003,并且确定它必须运行0003的反向迁移以返回到0002。
以防万一有人(如我)想知道如何从最初的(0001)迁回 :
django-admin.py migrate some_app zero
输出:
Running migrations for some_app: - Migrating backwards to zero state. < some_app:0001_initial
“零”是任何迁移之前的特殊状态。
参考: http : //south.aeracode.org/docs/commands.html
在参数的末尾添加迁移名称:
./manage.py migrate app-name 00xx-migration-name