美文网首页
[Django] migrations 默认目录修改

[Django] migrations 默认目录修改

作者: VirgoZ | 来源:发表于2018-09-04 10:19 被阅读0次

    migrations 默认目录修改

    群里看到个问题:

    migrations目录默认放在./app/models/migrations下面,能指定到别的目录吗?比如/data/app/models/migrations下么?

    闲来无事,就稍稍研究了一下。

    先从Migration 方向入手,翻遍手册,没有发现可以指定 path 的地方。

    再从 settings 着手,查找有没有相关可设置的方向,稍稍有所收获:

    MIGRATION_MODULES 选项,可以指定各个label的migration的包路径及名字。但还是相对路径,除非指定一个当前程序路径外的包路径?这点我没有去验证。

    最后再从源码入手,其实就在

    Lib\site-packages\django\core\management\commands\makemigrations.py 中使用了 MigrationWriter 类
    
    而MigrationWriter类中的 path 方法决定了路径,
    
    path方法 调用了 basedir 和 filename 方法,一个控制文件名,一个管理路径。
    
    在不想改变文件名的情况下,只需要修改basedir 方法中的 返回值就可以实现这个需求。
    

    Tips: 改完系统包,需要部署到其它环境的时候不要忘了将修改带过去!

    basedir 中调用了 MigrationLoader 的 migrations_module 方法,该方法返回 app_label 名称 及 一个布尔值

    相关文章

      网友评论

          本文标题:[Django] migrations 默认目录修改

          本文链接:https://www.haomeiwen.com/subject/aoxgwftx.html