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を記述