モデルフォームLink to this heading

ModelForm API リファレンス。 ModelForm の使用に関する入門的な資料は、トピックガイドの モデルからフォームを作成する を参照してください。

モデルフォームの Meta APILink to this heading

class ModelFormOptionsLink to this definition

_meta API は Django モデルを反映したフォームを構築するために使用されます。これは django.forms.models.ModelFormOptions インスタンスであり、各モデルフォームの _meta 属性を通じてアクセスできます。

生成されるフォームの構造は、内部の Meta クラスの属性としてメタデータオプションを定義することでカスタマイズできます。以下がその例です。

Code
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_fieldsformfield_callback を除く設定任意の属性には、モデルフィールド名をキーとしてそれぞれの値に対応づけた辞書型を指定してください。指定した辞書に定義されていないフィールドについては、そのフィールドのデフォルト値が適用されます。

error_messagesLink to this heading

ModelFormOptions.error_messagesLink to this definition

モデルフィールド名をキーとする辞書であり、その値としてエラーメッセージキー( nullblankinvalidunique など)とカスタムエラーメッセージをフィールドごとに対応付けた辞書を持ちます。

指定されていないフィールドについては、 Django はそのモデルフィールドの django.db.models.Field.error_messages に定義されたエラーメッセージで代用するか、最終的にはそのフィールド型のデフォルトエラーメッセージを適用します。

excludeLink to this heading

ModelFormOptions.excludeLink to this definition

フォームから除外する model のフィールド名のタプルまたはリスト。

fields または exclude のいずれかの設定が必要です。どちらも設定されない場合は ImproperlyConfigured 例外が送出されます。 exclude を設定して fields を設定しない場合 exclude で指定していないすべてのモデルフィールドをフォームに含めます。

field_classesLink to this heading

ModelFormOptions.field_classesLink to this definition

モデルフィールド名に対して Field クラスを対応づける辞書。これは、モデルフィールドの Field.formfield() メソッドで使用される form_class をオーバーライドします。

値が指定されていないフィールドについて、 Djangoはモデルフィールドの デフォルトのフィールドクラス を適用します。

fieldsLink to this heading

ModelFormOptions.fieldsLink to this definition

フォームに含める model のフィールド名のタプルまたはリスト。値を '__all__' にすると、すべてのフィールドを含むよう設定されます。

exclude で指定したフィールドは、 fields に指定してもフォームに含まれることはありません。

fields または exclude のいずれかの設定が必要です。どちらも設定されない場合は ImproperlyConfigured 例外が送出されます。

formfield_callbackLink to this heading

ModelFormOptions.formfield_callbackLink to this definition

モデルフィールドを受け取り django.forms.Field オブジェクトを返す関数または呼び出し可能オブジェクト。

help_textsLink to this heading

ModelFormOptions.help_textsLink to this definition

フィールド名に対してヘルプテキスト文字列を対応づける辞書。

指定されていないフィールドについては、 Django はモデルフィールドの help_text を適用します。

labelsLink to this heading

ModelFormOptions.labelsLink to this definition

フィールド名に対してラベル文字列を対応づける辞書。

指定されていないフィールドについては、 Django はモデルフィールドの verbose_name 、ついでフィールドの属性名を適用します。

localized_fieldsLink to this heading

ModelFormOptions.localized_fieldsLink to this definition

ローカライズする model のフィールド名のタプルまたはリスト。値を '__all__' にすると、すべてのフィールドがローカライズされます。

デフォルトでは、フォームフィールドはローカライズされません。詳細は フィールドのローカライズを有効にする を参照してください。

modelLink to this heading

ModelFormOptions.modelLink to this definition

必須。 ModelForm に使用する django.db.models.Model を指定します。

widgetsLink to this heading

ModelFormOptions.widgetsLink to this definition

フィールド名に対して django.forms.Widget を対応づける辞書。

指定されていないフィールドについては、 Django はそのフィールドの django.db.models.Field 型に対応するデフォルトウィジェットを適用します。

モデルフォームファクトリ関数Link to this heading

modelform_factoryLink to this heading

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)Link to this definition

与えられた model に対して ModelForm を返します。必要に応じて form 引数を渡すことで、ModelForm を構築する開始地点として使うことができます。

fields は、フィールド名の省略可能なリストです。提供された場合、指定されたフィールドだけが、返されるフィールドの中に含まれるようになります。

exclude は、フィールド名の省略可能なリストです。提供された場合、fields 引数の中に指定されていたとしても、指定されたフィールドが返されるフィールドから除かれます。

formfield_callback は、モデルフィールドを取ってフォームフィールドを返す callable です。

widgets は、ウィジェットにマッピングされたモデルフィールド名のディクショナリです。

localized_fields は、ローカライズされるべきフィールドの名前のリストです。

labels は、ラベルにマッピングされたモデルフィールド名のディクショナリです。

help_texts は、ヘルプテキストにマッピングされたモデルフィールド名のディクショナリです。

error_messages は、エラーメッセージにマッピングされたモデルフィールド名のディクショナリです。

field_classes は、フォームフィールドクラスにマッピングされたモデルフィールド名のディクショナリです。

使用例は ModelForm factory 関数 を参照してください。

フィールドのリストは、キーワード引数 fieldsexclude、もしくはフォームの内部の Meta クラスで対応する属性を使って、明示的に提供する必要があります。詳しくは 使うフィールドを選択する を参照してください。使うフィールドの定義を省略すると、ImproperlyConfigured 例外を引き起こします。

modelformset_factoryLink to this heading

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)Link to this definition

与えられた model クラスに対して、FormSet クラスを返します。

引数 modelformfieldsexcludeformfield_callbackwidgetslocalized_fieldslabelshelp_textserror_messagesfield_classes は、すべて modelform_factory() を通して引き渡されます。

引数 formset, extra, can_delete, can_order, max_num, validate_max, min_num, validate_min, absolute_max, can_delete_extra, および rendererformset_factory() にそのまま渡されます。詳細については フォームセット を参照してください。

edit_only 引数は 新しいオブジェクトの作成を防ぐ のに使用できます。

使用例は モデルのフォームセット を参照してください。

inlineformset_factoryLink to this heading

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)Link to this definition

formset=BaseInlineFormSetcan_delete=Trueextra=3 をデフォルトとする、 modelformset_factory() を使った InlineFormSet を返します。

モデルが parent_model に複数の ForeignKey を持つ場合, fk_name を指定する必要があります。

使用例は インラインフォームセット を参照してください。