使用Django South向后迁移
好吧,所以这似乎是一个非常愚蠢的问题,我敢肯定我错过了某个地方。
你如何在Django上使用South进行向后迁移?
所以我调整了我的模型,创建了一个包含schemamigration
的迁移,通过migrate
运行migrate
,现在我意识到这不是我想要的,我希望它恢复schemamigration
。
缺少手动编辑数据库表和删除迁移文件,我应该如何回滚迁移回迁? 我通过谷歌找到了使用南方的向后迁移参考,但尚未找到一个可靠的代码示例。
谁能帮忙?
您需要确定在您想要回滚之前的迁移数量。
你的应用程序应该有一个迁移目录,其中的文件名为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会按顺序运行所有新迁移。 (它会查看数据库表以确定哪些是“新”)。
但是,您也可以指定通过编号进行的任何迁移,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
链接地址: http://www.djcxy.com/p/90229.html