压缩迁移 django 的最佳方法

Posted

技术标签:

【中文标题】压缩迁移 django 的最佳方法【英文标题】:Best way to squash migrations django 【发布时间】:2021-01-13 09:56:37 【问题描述】:

我有 10 次迁移,我想将它们保存在一个文件中。所以我使用 ./manage.py squashmigrations accounts 将它们压扁。现在我有 11 个文件,包括 init 和 squash 文件。所以我删除了其他 9 个文件并保留了 init 和 squash 并运行 migrationmigrate

现在想问这是正确的方法吗?我有另一个应用程序具有相同的场景我应该这样做吗?

【问题讨论】:

【参考方案1】:

是的,这基本上就是这样做的方法:) Django 有一个关于如何压缩迁移和适当工作流的很好的文档。见https://docs.djangoproject.com/en/3.1/topics/migrations/#migration-squashing

总之,

    创建一个 squash 迁移并将其添加到您的其他迁移中 将所有当前迁移应用到您的环境后,您可以照常删除旧文件。

但另外,你应该

    确保引用已删除迁移的其他应用已更新以链接到您的新 squash 迁移文件 删除 squash 迁移中的 replaces 属性,以便将其视为普通迁移(不再是 squash 迁移)

然后你就完成了,你可以对其他应用重复这个过程,再次累积一次迁移。

【讨论】:

以上是关于压缩迁移 django 的最佳方法的主要内容,如果未能解决你的问题,请参考以下文章

将文件夹和文件结构从 django 1.3 迁移到 django 1.4 的最佳方法是啥?

在独立的 Django 应用程序中进行新迁移的最佳方法是啥?

将 Django DB 从 SQLite 迁移到 MySQL 的最佳方法是啥?

如何在压缩它们后删除 django 迁移?

压缩 Django 迁移时的循环依赖

Django 压缩迁移:NodeNotFoundError