Django の ER図 出力 が 2ステップで出来た
Django では、Modelの定義を行う事でデータベースは定義は自動的に作成されます。
Modelの定義をキチンと理解していれば ER図なくてもでしょうが、DBMSで操作をしちゃいたい時(僕の場合)等にER図があると便利だと思い探してみました。
見つけてしまえば、たった2ステップ。簡単ですね(開発者に感謝!です)
(2018/05/15 追記) 出力される図はER図とは違うようですので、改めて最新の手順とともにエントリーを書きました。kennyさん、ご指摘ありがとうございます。 ->
Django で Model の グラフ図を出力 - AWS / PHP / Python ちょいメモ
手順
先述の環境が動作してる前提で、次のコマンドをたたく。
$ sudo apt-get install python-django-extensions graphviz python-pygraphviz
導入したいプロジェクトの settings.py に Appを追加する。名前がアンダースコアなのに注意(ハイフン書いたら動かなかった人>僕)。
INSTALLED_APPS = (
...
'django_extensions',
)
ER図を出力。 -a : all-applications , -g : group-models といったオプションです。
$ python manage.py graph_models -a -g -o er.png
出力オプション
ちなみに出力ファイル名のところを変えると 画像:png, jpg の他、ベクター:svg , PDF:pdf , HTML:plain も出力できました。その他、こんな拡張子のファイルがだせるようです。
Use one of: canon cmap cmapx cmapx_np dot eps fig gd gd2 gif gv imap imap_np ismap jpe jpeg jpg pdf pic plain plain-ext png pov ps ps2 svg svgz tk vml vmlz vrml wbmp x11 xdot xdot1.2 xdot1.4 xlib
Graphviz - Graph Visualization Software でサポートするものなら、なんでもいけるのかな?便利ですね。
動作確認メモ
上手く動作しない場合には、次の出力がでるかを確認
$ python manage.py ... [django_extensions] ... find_template generate_secret_key graph_models mail_debug notes ... $ python manage.py help graph_models Usage: manage.py graph_models [options] [appname] Creates a GraphViz dot file for the specified app names. You can pass multiple app names and they will all be combined into a single model. Output is usually directed to a dot file. Options: -v VERBOSITY, --verbosity=VERBOSITY ...
その他
ちなみに django-extensions は、以前(2009年ぐらいまで) django-command-extensions というプロジェクトだったようですね。
沢山の便利なツールが集まっているようなので、他も理解して活用したいです。