Djangoのmodels.pyからPlantUMLを自動で作成する。django-model2puml
DjangoのER図自動作成
DjangoでER図を自動で作成しようと考えたときにまず思いつくのが、django-extensionsによるgraph_modelsメソッドです。詳しくは↓の記事で解説しています。
「Djangoでdjano-extensionsを利用してER図(=ERD)を自動作成する!」
しかしdjango-extensionsでできるのは↓のようなER図で、若干気にいらない人も多いかと思います。
そこで今回はmodels.pyからPlantUMLのファイルを自動で出力できるライブラリdjango-model2pumlを発見したので、django_extensionsと比べてみます。
サンプルコード
Githubにあります。
もしくはターミナルで
git clone -b django_plantuml https://github.com/yeconnect/django-baby-starter-template.git
cd django-baby-starter-template
docker compose up
バージョン
python 3.9
django==3.2
django-model2puml==0.1.14
django-model2pumlのセットアップ
サンプルコードを使っている場合は、セットアップができています。
1.ライブラリのインストール
pip install django-model2puml
(サンプルコードではrequirements.txtに追加して、一括でインストールしています。)
2.settings.pyに追記
INSTALLED_APPS = [
...
'puml_generator',
]
↑のようにsettings.pyのINSTALLED_APPSにpuml_generatorを追加します。
これでセットアップは完了です!
PlantUMLのファイルを作成してみる。
それではmodels.pyのモデル定義からPlantUMLのファイルを作成してみましょう
サンプルコードを使っている場合は
docker compose run --rm web python manage.py generate_puml
サンプルコードを使っていない場合は
python manage.py generate_puml
こんなPlantUMLファイルができました
ブラウザ上でPlantUMLをきれいに表示できる「PlantUML Editor」にこのPlantUMLファイルをコピペすると↓のようになりました。
django-extensionsのER図より柔軟で使いやすいと感じました!
generate_pumlコマンドのパラメータまとめ
python manage.py generate_puml にはいくつかパラメータをつけられます。以下まとめてみましたが、実際に動かしてみた挙動から推測で書いてあるもありますのでご了承ください。
–file(ファイル名を指定して作成)
python manage.py generate_puml --file hogehoge.puml
のようにするとhogehoge.pumlというファイルができます。デフォルトはmodels_diagram.pumlのようです。
–title(PlantUMLにタイトルを追加する)
python manage.py generate_puml --title hogehoge
のようにするとタイトルがhogehogeになります。必要な人もいるのでしょうか?
–add-help(説明をPlantUMLにも付ける)
python manage.py generate_puml --add-help
のようにすると、設計の説明が追加されます。例えばverbose_nameを書いていた場合、それがPlantUMLファイルに入ります。
–add-choices(選択肢を表示する)
python manage.py generate_puml --add-choices
CharFieldのchoicesを使っている場合、これを付けると選択肢が追加されます。例えば性別の選択肢sexがあるとき、この–add-choicesを付けると↓のように表示されます。
–add-legend(記号の説明を付ける)
python manage.py generate_puml --add-legend
このパラメータを付けると、↓のように、どの記号がどのDjangoのmodel fieldに対応するのかの説明が付きます。
–include(特定のアプリのみ)
python manage.py generate_puml --include blog
特定のアプリだけ記述したいときに使えます。↑だとblogアプリのみ抽出されます。
–omit(特定のアプリを除く)
python manage.py generate_puml --omit blog
のようにすると、blogアプリ部分を記述しなくなります。
-add-omitted-headers(omitされたアプリのヘッダーだけ表示させる)
python manage.py generate_puml --add-omitted-headers --omit blog
おそらく–omitと同時に使うオプションです。除外したアプリのヘッダーだけ残したい時に使えます。
–headers-only(フィールドの情報を除く)
python manage.py generate_puml --headers-only
フィールドの情報が記述されなくなります。
ディスカッション
コメント一覧
まだ、コメントがありません