Django migrations 默認目錄修改

migrations 默認目錄修改

羣裏看到個問題:django

migrations目錄默認放在./app/models/migrations下面,能指定到別的目錄嗎?好比/data/app/models/migrations下麼?

閒來無事,就稍稍研究了一下。app

先從Migration 方向入手,翻遍手冊,沒有發現能夠指定 path 的地方。code

再從 settings 着手,查找有沒有相關可設置的方向,稍稍有所收穫:ip

MIGRATION_MODULES 選項,能夠指定各個label的migration的包路徑及名字。但仍是相對路徑,除非指定一個當前程序路徑外的包路徑?這點我沒有去驗證。部署

最後再從源碼入手,其實就在源碼

Lib\site-packages\django\core\management\commands\makemigrations.py 中使用了 MigrationWriter 類

而MigrationWriter類中的 path 方法決定了路徑,

path方法 調用了 basedir 和 filename 方法,一個控制文件名,一個管理路徑。

在不想改變文件名的狀況下,只須要修改basedir 方法中的 返回值就能夠實現這個需求。

Tips: 改完系統包,須要部署到其它環境的時候不要忘了將修改帶過去!it

basedir 中調用了 MigrationLoader 的 migrations_module 方法,該方法返回 app_label 名稱 及 一個布爾值
相關文章
相關標籤/搜索