diadia

興味があることをやってみる。自分のメモを残しておきます。

ModelFormなるもの

ベース記事

formの扱い方 まとめ

ModelForm

ModelFormの有用性

今までフォームに関しては、htmlで記載する方法と、forms.Formの継承として記述する方法を使ってきた。これらの方法とは別にforms.ModelFormを使ったフォームの作成手法があることがわかった。forms.Formでフォームの定義をしていたのだが、models.pyのモデルに基づいたformをModelFormは自動で作ってくれる。これは少ない記述量で完成することができて便利である。

参考url
https://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を記述