有没有办法回滚所有Django应用程序的迁移?

时间:2018-11-16 19:54:40

标签: django

我正在引导一个新的django项目,而我的团队通常会制作一个“设置/重置”脚本,该脚本将重建容器以及drop(除非它尚不存在)并从头开始重建数据库。

我找到了manage.py flush命令来删除数据,但我也想恢复所有迁移。我只能找到一个命令来一次回滚单个应用程序的迁移:

manage.py migrate <app_name> zero

是否可以为每个应用程序做到这一点,还是必须在脚本中列出它们?我们确实有manage.py migrate命令可以迁移所有内容,所以我基本上只想要相反的东西。

如果不可能的话,我可能只是将db容器放下并重建数据库

谢谢!

3 个答案:

答案 0 :(得分:1)

python manage.py showmigrations | grep -P "^[^ ]" | xargs -I {app} python manage.py migrate {app} zero

如果不可能,我可能只是将db容器放下并重建数据库

老实说,删除数据库比让Django不应用容易得多。我只是添加此答案,以防有人想要单线用于其他目的。

答案 1 :(得分:0)

如果您具有django扩展名,则python manage.py reset_db听起来像您要找的东西。

答案 2 :(得分:0)

好的方法是使用Django工具:

python manage.py migrate my_app zero

要撤消数据库Reversing migrations : Django doc

中的迁移

然后,手动删除my_app / migrations中不需要的迁移

最后,您又回到了干净的项目:

python manage.py migrate makemigrations my_app
python manage.py migrate my_app

享受!!