接手他人專案來完後,有意識到一堆資料表,但我根本不知道每個欄位之間的關係。
做功課才知道有ER圖這種好東西啦~我就直接用這關鍵字問AI了
Q:django有哪有產ER圖呢?
A:在 Django 裡畫 ER 圖最實用的是 django-extensions 的 graph_models 指令。下面一步步來:
作法一:django-extensions + Graphviz(最穩定)
1) 安裝套件
pip install django-extensions pygraphviz # 或改裝 pydotplus
系統需要 Graphviz
macOS: brew install graphviz
Ubuntu/Debian: sudo apt-get install graphviz
Windows: 先到 graphviz.org 下載安裝,安裝後把 dot.exe 所在路徑加進 PATH
2) 加到設定
settings.py
INSTALLED_APPS = [
# ... 你的 app
"django_extensions",
]
3) 產生 ER 圖
所有 apps:
python manage.py graph_models -a -g -o erd.png
只看某個 app(例如 shop):
python manage.py graph_models shop -g -o shop_erd.png
常用參數:
-a:所有已安裝的 app
-g:依 app 分群,版面較清楚
-o 文件名:輸出圖片(png/jpg/svg/pdf…)
-I ModelA,ModelB:只包含這些 model
-X ModelA,ModelB:排除某些 model
--disable-fields:只看關聯(線),不列欄位,圖會更簡潔
--verbosity 3:除錯時看細節
例子:只看關聯、排除內建使用者與權限,輸出 SVG:
python manage.py graph_models -a -g \
-X AbstractUser,Permission,Group,ContentType,Session \
--disable-fields -o erd.svg
常見安裝問題
找不到 dot:Graphviz 沒裝好或 PATH 沒設定。執行 dot -V 應該要有版本字樣。
pygraphviz 安裝失敗:先安裝 Graphviz,再重新安裝 pygraphviz。必要時指定 include/library 目錄(視系統而定)。不想處理編譯問題可改用 pydotplus:
pip install pydotplus
python manage.py graph_models -a -g --output=erd.png
作法二:PlantUML 工作流(文字版可版控)
若你偏好把圖當「程式碼」管理:
產生 puml:
套件選項(擇一):django2puml、django-plantuml
例:
pip install django2puml
django2puml path/to/your_project settings.module > erd.puml
用本地 PlantUML 或 IDE 外掛把 erd.puml 渲染成 PNG/SVG。
優點:Diff 清楚、易審查;缺點:初次設定略麻煩。
版面太亂怎麼辦?
先分 app 出圖:graph_models yourapp -g -o yourapp.svg
只畫核心關聯:--disable-fields 或用 -I / -X 控制範圍
改輸出 SVG,再用瀏覽器放大檢視
給你一個實用指令集(放到 Makefile 或 npm script)
erd:
\tpython manage.py graph_models -a -g \
\t -X AbstractUser,Permission,Group,ContentType,Session \
\t --output=docs/erd.svg
之後只要執行 make erd 就會更新 ER 圖。