ModelFormなるもの
ベース記事
formの扱い方 まとめModelForm
ModelFormの有用性
今までフォームに関しては、htmlで記載する方法と、forms.Formの継承として記述する方法を使ってきた。これらの方法とは別にforms.ModelFormを使ったフォームの作成手法があることがわかった。forms.Formでフォームの定義をしていたのだが、models.pyのモデルに基づいたformをModelFormは自動で作ってくれる。これは少ない記述量で完成することができて便利である。
参考urlhttps://docs.djangoproject.com/ja/2.1/topics/forms/modelforms/#module-django.forms.models
Django ModelFormをカスタマイズする | ぷろぐら×でざいん
https://torina.top/detail/277/
3者の比較
htmlで書く場合
htmlで書く場合のストーリーは以下のようなものだろう。html上にmodels.pyで定めた要素に従ったフォームを記述。views.pyでrequest.POST["hoge"]でクライアントの入力値を取得。入力値に基づいてクラスインスタンスを作成。
- models.pyにてクラス作成
- html上でformタグ類を書く
- views.pyを記述
forms.pyで書く場合
まずmodels.pyでテーブルを書く。その次にforms.pyでmodels.pyに対応したformを書く(ここが面倒)。その次にhtml上で{{ form }}のような形で記述を省略する。そしてviews.pyを記述する。
- models.pyにてクラス作成
- forms.pyでmodels.pyに対応した形で書く
- html上で{{ form }}と省略して書く
- views.pyを記述
ModelFormをつかう場合
models.pyでテーブルを書く。forms.pyでModelFormによって省略した形で書く。html上で省略した形で書く。views.pyを書く。
- models.pyにてクラス作成
- forms.pyでModelFormを使い省略して書く
- html上で{{ form }}と省略して書く
- views.pyを記述