代码之家  ›  专栏  ›  技术社区  ›  damd

在Django中优化压缩迁移

  •  0
  • damd  · 技术社区  · 7 年前

    我创建了一个压缩的Django迁移,看起来类似于:

    add field "name"
    run sql "CREATE FUNCTION x"
    add field "age"
    remove field "name"
    run sql "DROP FUNCTION x"
    

    因为Django无法完全优化两个版本之间的代码 run sql 预计 add field "name" remove field "name" 没有被优化掉。但是,我知道这两个SQL运行不会影响任何相关内容,因此我可以手动删除 部分。

    在手动移除 零件,有没有办法让Django只对结果运行优化步骤?

    0 回复  |  直到 7 年前
        1
  •  1
  •   Joel Hillacre    7 年前

    我用Django的 MigrationOptimizer 重写单个迁移文件,特别是针对此场景。我把它作为要点贴在这里:

    https://gist.github.com/jhillacre/7fa8c182dd821387d4cf1fdb9371dcd7

    问题包括:

    • 正在扭曲的可交换依赖项

    initial dependencies

    或者,可以在挤压之前使用 RunPython RunSql elidable 论点从文档中:

    可选的elidable参数确定挤压迁移时是否删除(省略)操作。 link