ModelForm、Formクラスの違い
ModelFormとは、既存のモデルと連携されたフォームを作成するためのフォームクラスです。
models.pyで指定されたフィールドが、フォームフィールドとして自動で表示されるようになります。
Formクラスとの違いは、モデルクラスとの連携。連携することにより、保存のための記述が不要になります。
入力したデータをデータベースに保存したいなら、ModelFormが便利。
Formクラスの構成>
from django import forms
class TestForm(forms.Form):
field1 = forms.CharField(max_length=255)
field2 = forms.IntegerField()
fields3 = ....
....
ModelFormクラスの構成>
from django import forms
from .models import NippoModel
class TestModelForm(forms.ModelForm):
class Meta:
model = NippoModel
fields = "__all__" #表示するフィールドを指定します。
forms.py:ModelFormの書き方
継承したクラス内でMetaクラスを定義
「model」変数で保存・編集するモデルクラスを指定
「fields」変数で使用するフィールドを指定
「fields」の記述方法>
#フィールド全て
fields = "__all__"
#フィールドの一部
fields = ["フィールド1", "フィールド2"]
#一部のフィールドを除く
exclude = "除きたいフィールド"
views.py:クラスベースビュー内での書き方(form_validメソッドは割愛することも可能)
from django.views.generic.edit import CreateView
from .forms import フォームクラス名
class ビュークラス名(CreateView):
template_name = テンプレートパス
form_class = フォームクラス名
success_url = URLパス