在Django的迁移代码中,有一个squashmigrations命令:“如果可能的话,将app_label的迁移压缩到并包含migration_name到更少的迁移。”
所以,如果你想挤压,比如说,前5次迁移,这会有帮助的。
从一个特定的migration_name开始,最好的方法是什么?
在我目前正在进行的一个项目中,我们添加了5-10个新的迁移文件,就像我们添加了新特性一样。我们将立即部署整个项目,似乎单独运行这些项目将花费太长时间。我想把这个项目的所有迁移压缩到一个迁移中,并测试运行这个迁移的时间。
发布于 2016-10-14 00:53:23
python manage.py squashmigrations <appname> <squashfrom> <squashto>
python manage.py help squashmigrationshttps://docs.djangoproject.com/en/dev/topics/migrations/#migration-squashing
这将为您提供更多的粒度控制哪些迁移到压缩,并让您保持一个更干净的提交历史。删除+重新创建所有迁移可能会导致其他问题,如循环依赖关系,具体取决于模型的构造方式。
发布于 2016-10-13 19:13:19
您只需删除迁移文件并再次运行makemigrations即可。如果您有一个使用这些方法的dev部署,则应该将migrate back设置为删除第一个之前的那个。
另外,最好先提交代码,以防出问题。
另外:
稍微复杂的一点是,如果存在自定义RunPython代码,它将不会包含在makemigrations创建的新迁移中。
发布于 2020-10-20 13:38:45
在Django 1.9中引入了南瓜迁移命令
如果您使用的是Django 1.8,则需要
squashmigrations.py获取https://github.com/django/django/blob/stable/1.9.x/django/core/management/commands/squashmigrations.py/-package-/-app-/management/commands/下面squashmigrations19.py./manage.py squashmigrations19 -app- 0002 0003https://stackoverflow.com/questions/40028586
复制相似问题