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

我们所有的部署和开发人员都是最新的,我想清除所有应用程序的迁移,并创建一个捕获应用程序当前状态的单个初始迁移(0001),然后继续进行从那里。几年前,我使用其他应用程序进行了此操作,效果很好,但此后我就忘记了该过程是什么,并且忘记了解释该操作方法的博客文章。谁能为我分解这个过程?

最佳答案

我想通了(还算不错)。要设置迁移重置,请执行以下操作:

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的评论(以及我的回复)

关于django - 如何重置南迁以捕获我的Django模型的当前状态,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12822584/

10-15 16:31