使用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

上一篇: Backwards migration with Django South

下一篇: Mandatory primary keys in Sql Azure