Model forms¶
ModelForm
API reference. For introductory material about using a
ModelForm
, see the モデルからフォームを作成する topic guide.
Model form Meta
API¶
The _meta
API is used to build forms that reflect a Django model. It is
accessible through the _meta
attribute of each model form, and is an
django.forms.models.ModelFormOptions
instance.
The structure of the generated form can be customized by defining metadata
options as attributes of an inner Meta
class. For example:
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
Required attributes are model
, and either
fields
or exclude
. All
other Meta
attributes are optional.
Optional attributes, other than localized_fields
and
formfield_callback
, expect a dictionary that maps a
model field name to a value. Any field that is not defined in the dictionary
falls back to the field's default value.
Invalid field names
Invalid or excluded field names in an optional dictionary attribute have no effect, since fields that are not included are not accessed.
error_messages
¶
- ModelFormOptions.error_messages¶
A dictionary that maps a model field name to a dictionary of error message keys (
null
,blank
,invalid
,unique
, etc.) mapped to custom error messages.When a field is not specified, Django will fall back on the error messages defined in that model field's
django.db.models.Field.error_messages
and then finally on the default error messages for that field type.
exclude
¶
- ModelFormOptions.exclude¶
A tuple or list of
model
field names to be excluded from the form.Either
fields
orexclude
must be set. If neither are set, anImproperlyConfigured
exception will be raised. Ifexclude
is set andfields
is unset, all model fields, except for those specified inexclude
, are included in the form.
field_classes
¶
- ModelFormOptions.field_classes¶
A dictionary that maps a model field name to a
Field
class, which overrides theform_class
used in the model field'sField.formfield()
method.When a field is not specified, Django will fall back on the model field's default field class.
fields
¶
- ModelFormOptions.fields¶
A tuple or list of
model
field names to be included in the form. The value'__all__'
can be used to specify that all fields should be included.If any field is specified in
exclude
, this will not be included in the form despite being specified infields
.Either
fields
orexclude
must be set. If neither are set, anImproperlyConfigured
exception will be raised.
formfield_callback
¶
- ModelFormOptions.formfield_callback¶
A function or callable that takes a model field and returns a
django.forms.Field
object.
help_texts
¶
labels
¶
- ModelFormOptions.labels¶
A dictionary that maps a model field names to a label string.
When a field is not specified, Django will fall back on that model field's
verbose_name
and then the field's attribute name.
localized_fields
¶
- ModelFormOptions.localized_fields¶
A tuple or list of
model
field names to be localized. The value'__all__'
can be used to specify that all fields should be localized.By default, form fields are not localized, see enabling localization of fields for more details.
model
¶
- ModelFormOptions.model¶
Required. The
django.db.models.Model
to be used for theModelForm
.
widgets
¶
- ModelFormOptions.widgets¶
A dictionary that maps a model field name to a
django.forms.Widget
.When a field is not specified, Django will fall back on the default widget for that particular type of
django.db.models.Field
.
Model form factory functions¶
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
を指定する必要があります。使用例は インラインフォームセット を参照してください。