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

Ben*_*rts 8 django django-south

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

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

Ben*_*rts 13

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

rm <app-dir>/migrations/*
python manage.py schemamigration <app-name> --initial
python manage.py migrate <app-name> 0001 --fake  --delete-ghost-migrations
Run Code Online (Sandbox Code Playgroud)

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

python manage.py migrate <app-name> 0001 --fake --delete-ghost-migrations
Run Code Online (Sandbox Code Playgroud)

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

注意事项:请参阅guettli的评论(和我的回复)