モデルフォーム¶
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¶
- ModelFormOptions.error_messages¶
モデルフィールド名をキーとする辞書であり、その値としてエラーメッセージキー(
null、blank、invalid、uniqueなど)とカスタムエラーメッセージをフィールドごとに対応付けた辞書を持ちます。指定されていないフィールドについては、 Django はそのモデルフィールドの
django.db.models.Field.error_messagesに定義されたエラーメッセージで代用するか、最終的にはそのフィールド型のデフォルトエラーメッセージを適用します。
exclude¶
field_classes¶
- ModelFormOptions.field_classes¶
モデルフィールド名に対して
Fieldクラスを対応づける辞書。これは、モデルフィールドのField.formfield()メソッドで使用されるform_classをオーバーライドします。値が指定されていないフィールドについて、 Djangoはモデルフィールドの デフォルトのフィールドクラス を適用します。
fields¶
formfield_callback¶
- ModelFormOptions.formfield_callback¶
モデルフィールドを受け取り
django.forms.Fieldオブジェクトを返す関数または呼び出し可能オブジェクト。
help_texts¶
labels¶
- ModelFormOptions.labels¶
フィールド名に対してラベル文字列を対応づける辞書。
指定されていないフィールドについては、 Django はモデルフィールドの
verbose_name、ついでフィールドの属性名を適用します。
localized_fields¶
- ModelFormOptions.localized_fields¶
ローカライズする
modelのフィールド名のタプルまたはリスト。値を'__all__'にすると、すべてのフィールドがローカライズされます。デフォルトでは、フォームフィールドはローカライズされません。詳細は フィールドのローカライズを有効にする を参照してください。
model¶
- ModelFormOptions.model¶
必須。
ModelFormに使用するdjango.db.models.Modelを指定します。
widgets¶
- ModelFormOptions.widgets¶
フィールド名に対して
django.forms.Widgetを対応づける辞書。指定されていないフィールドについては、 Django はそのフィールドの
django.db.models.Field型に対応するデフォルトウィジェットを適用します。
モデルフォームファクトリ関数¶
modelform_factory¶
- modelform_factory(model, form=ModelForm, fields=None, exclude=None, formfield_callback=None, widgets=None, localized_fields=None, labels=None, help_texts=None, error_messages=None, field_classes=None)[ソース]¶
与えられた
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¶
- modelformset_factory(model, form=ModelForm, formfield_callback=None, formset=BaseModelFormSet, extra=1, can_delete=False, can_order=False, max_num=None, fields=None, exclude=None, widgets=None, validate_max=False, localized_fields=None, labels=None, help_texts=None, error_messages=None, min_num=None, validate_min=False, field_classes=None, absolute_max=None, can_delete_extra=True, renderer=None, edit_only=False)[ソース]¶
与えられた
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¶
- inlineformset_factory(parent_model, model, form=ModelForm, formset=BaseInlineFormSet, fk_name=None, fields=None, exclude=None, extra=3, can_order=False, can_delete=True, max_num=None, formfield_callback=None, widgets=None, validate_max=False, localized_fields=None, labels=None, help_texts=None, error_messages=None, min_num=None, validate_min=False, field_classes=None, absolute_max=None, can_delete_extra=True, renderer=None, edit_only=False)[ソース]¶
formset=BaseInlineFormSet、can_delete=True、extra=3をデフォルトとする、modelformset_factory()を使ったInlineFormSetを返します。モデルが
parent_modelに複数のForeignKeyを持つ場合,fk_nameを指定する必要があります。使用例は インラインフォームセット を参照してください。