ModelForm、Formクラスの違い

Django

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パス

 

タイトルとURLをコピーしました