Backwards migration with Django South
好吧,所以这似乎是一个很愚蠢的问题,我肯定我错过了什么。
如何在Django上使用South执行向后迁移?
所以我调整了我的模型,用
除了手动编辑数据库表和删除迁移文件之外,我应该如何回滚迁移?我通过google找到了对使用south进行向后迁移的引用,但还没有找到一个可靠的代码示例。
有人能帮忙吗?
您需要在要回滚的迁移之前计算出迁移的数量。
您的应用程序应该有一个迁移目录,其中的文件名为
1 2 3 4 | 0000_initial.py 0001_added_some_fields.py 0002_added_some_more_fields.py 0003_deleted_some_stuff.py |
通常,当运行
但是,您也可以按数字指定任何迁移,South将向前或向后迁移您的数据库,以将其迁移到该点。因此,对于上面的示例文件,如果您已经迁移了多达0003个文件,并且希望反向运行0003(有效地撤消它),那么您将运行
1 | ./manage.py migrate your_app 0002 |
South会查看数据库,意识到它已经运行了0003,并确定它必须运行0003的反向迁移才能返回到0002。
以防有人(像我)想知道如何从初始位置(0001)迁移回来:
1 | django-admin.py migrate some_app zero |
输出:
1 2 3 | Running migrations for some_app: - Migrating backwards to zero state. < some_app:0001_initial |
"零"是任何迁移之前的特殊状态。
参考:http://south.aeracode.org/docs/commands.html
在参数末尾添加迁移名称:
1 | ./manage.py migrate app-name 00xx-migration-name |