ModelForm API リファレンス。 ModelForm の使用に関する入門的な資料は、トピックガイドの モデルからフォームを作成する を参照してください。
Meta API¶_meta API は Django モデルを反映したフォームを構築するために使用されます。これは django.forms.models.ModelFormOptions インスタンスであり、各モデルフォームの _meta 属性を通じてアクセスできます。
生成されるフォームの構造は、内部の Meta クラスの属性としてメタデータオプションを定義することでカスタマイズできます。以下がその例です。
from django.forms import ModelForm
from myapp.models import Book
class BookForm(ModelForm):
class Meta:
model = Book
fields = ["title", "author"]
help_texts = {
"title": "The title of the book",
"author": "The author of the book",
}
# ... other attributes
必要な属性は、まず model と、それから fields または exclude のいずれかです。その他の Meta 属性の設定は任意です。
localized_fields と formfield_callback を除く設定任意の属性には、モデルフィールド名をキーとしてそれぞれの値に対応づけた辞書型を指定してください。指定した辞書に定義されていないフィールドについては、そのフィールドのデフォルト値が適用されます。
無効なフィールド名に対する挙動
任意の辞書属性に無効または除外されたフィールド名を指定しても、出力しないフィールドにはアクセスされないので効果はありません。
error_messages¶モデルフィールド名をキーとする辞書であり、その値としてエラーメッセージキー( null 、 blank 、 invalid 、 unique など)とカスタムエラーメッセージをフィールドごとに対応付けた辞書を持ちます。
指定されていないフィールドについては、 Django はそのモデルフィールドの django.db.models.Field.error_messages に定義されたエラーメッセージで代用するか、最終的にはそのフィールド型のデフォルトエラーメッセージを適用します。
exclude¶field_classes¶モデルフィールド名に対して Field クラスを対応づける辞書。これは、モデルフィールドの Field.formfield() メソッドで使用される form_class をオーバーライドします。
値が指定されていないフィールドについて、 Djangoはモデルフィールドの デフォルトのフィールドクラス を適用します。
fields¶formfield_callback¶モデルフィールドを受け取り django.forms.Field オブジェクトを返す関数または呼び出し可能オブジェクト。
help_texts¶labels¶フィールド名に対してラベル文字列を対応づける辞書。
指定されていないフィールドについては、 Django はモデルフィールドの verbose_name 、ついでフィールドの属性名を適用します。
localized_fields¶ローカライズする model のフィールド名のタプルまたはリスト。値を '__all__' にすると、すべてのフィールドがローカライズされます。
デフォルトでは、フォームフィールドはローカライズされません。詳細は フィールドのローカライズを有効にする を参照してください。
model¶必須。 ModelForm に使用する django.db.models.Model を指定します。
widgets¶フィールド名に対して django.forms.Widget を対応づける辞書。
指定されていないフィールドについては、 Django はそのフィールドの django.db.models.Field 型に対応するデフォルトウィジェットを適用します。
modelform_factory¶与えられた model に対して ModelForm を返します。必要に応じて form 引数を渡すことで、ModelForm を構築する開始地点として使うことができます。
fields は、フィールド名の省略可能なリストです。提供された場合、指定されたフィールドだけが、返されるフィールドの中に含まれるようになります。
exclude は、フィールド名の省略可能なリストです。提供された場合、fields 引数の中に指定されていたとしても、指定されたフィールドが返されるフィールドから除かれます。
formfield_callback は、モデルフィールドを取ってフォームフィールドを返す callable です。
widgets は、ウィジェットにマッピングされたモデルフィールド名のディクショナリです。
localized_fields は、ローカライズされるべきフィールドの名前のリストです。
labels は、ラベルにマッピングされたモデルフィールド名のディクショナリです。
help_texts は、ヘルプテキストにマッピングされたモデルフィールド名のディクショナリです。
error_messages は、エラーメッセージにマッピングされたモデルフィールド名のディクショナリです。
field_classes は、フォームフィールドクラスにマッピングされたモデルフィールド名のディクショナリです。
使用例は ModelForm factory 関数 を参照してください。
フィールドのリストは、キーワード引数 fields や exclude、もしくはフォームの内部の Meta クラスで対応する属性を使って、明示的に提供する必要があります。詳しくは 使うフィールドを選択する を参照してください。使うフィールドの定義を省略すると、ImproperlyConfigured 例外を引き起こします。
modelformset_factory¶与えられた model クラスに対して、FormSet クラスを返します。
引数 model、form、fields、exclude、formfield_callback、widgets、localized_fields、labels、help_texts、error_messages、field_classes は、すべて modelform_factory() を通して引き渡されます。
引数 formset, extra, can_delete, can_order, max_num, validate_max, min_num, validate_min, absolute_max, can_delete_extra, および renderer は formset_factory() にそのまま渡されます。詳細については フォームセット を参照してください。
edit_only 引数は 新しいオブジェクトの作成を防ぐ のに使用できます。
使用例は モデルのフォームセット を参照してください。
inlineformset_factory¶formset=BaseInlineFormSet、can_delete=True、extra=3 をデフォルトとする、 modelformset_factory() を使った InlineFormSet を返します。
モデルが parent_model に複数の ForeignKey を持つ場合, fk_name を指定する必要があります。
使用例は インラインフォームセット を参照してください。
12月 03, 2025