如何重置南迁移以捕获我的django模型的当前状态

时间:2012-10-10 15:06:20

标签: django django-south

我有一个应用程序,目前有35个南迁移。在设置新部署时我们需要花费一些时间(我们经常创建新的部署),并且应用程序在不断发展 - 添加更多迁移。此外,迁移包括一些可能复杂的数据迁移和一些破坏SQLite3的自定义迁移(现在不是一个很大的问题,因为一切都在Postgres上,但很高兴能够建立一个快速的测试环境),通常只是更多可能出错的事情。

我们所有的部署和开发人员都是最新的,我想清除所有应用程序的迁移并创建一个捕获应用程序当前状态的初始迁移(0001),然后继续从那里开始新的迁移。几年前我用不同的应用程序做了这个,并且它运行得很好,但我已经忘记了这个过程是什么,并且忘记了解释如何操作的博客文章。有人可以为我打破这个过程吗?

1 个答案:

答案 0 :(得分:13)

我想出来了(并不是太糟糕)。要设置迁移重置,请执行以下操作:

rm <app-dir>/migrations/*
python manage.py schemamigration <app-name> --initial
python manage.py migrate <app-name> 0001 --fake  --delete-ghost-migrations

我将更改提交到存储库,然后对于其他地方的代码的每次部署,运行:

python manage.py migrate <app-name> 0001 --fake --delete-ghost-migrations

确保在上次迁移到其他任何地方和重置之间没有添加任何新内容,否则新的0001迁移将与模式不匹配!

警告:请参阅guettli的评论(和我的回复)