ModelForm API reference. For introductory material about using a
ModelForm, see the Creating forms from models topic guide.
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¶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¶A tuple or list of model field names to be
excluded from the form.
Either fields or
exclude must be set. If neither are set, an
ImproperlyConfigured exception will be
raised. If exclude is set and
fields is unset, all model fields, except for
those specified in exclude, are included in the
form.
field_classes¶A dictionary that maps a model field name to a Field
class, which overrides the form_class used in the model field’s
Field.formfield() method.
When a field is not specified, Django will fall back on the model field’s default field class.
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 in
fields.
Either fields or
exclude must be set. If neither are set, an
ImproperlyConfigured exception will be
raised.
formfield_callback¶A function or callable that takes a model field and returns a
django.forms.Field object.
help_texts¶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¶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¶Required. The django.db.models.Model to be used for the
ModelForm.
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.
modelform_factory¶Returns a ModelForm class for the given model.
You can optionally pass a form argument to use as a starting point for
constructing the ModelForm.
fields is an optional list of field names. If provided, only the named
fields will be included in the returned fields.
exclude is an optional list of field names. If provided, the named
fields will be excluded from the returned fields, even if they are listed
in the fields argument.
formfield_callback is a callable that takes a model field and returns
a form field.
widgets is a dictionary of model field names mapped to a widget.
localized_fields is a list of names of fields which should be localized.
labels is a dictionary of model field names mapped to a label.
help_texts is a dictionary of model field names mapped to a help text.
error_messages is a dictionary of model field names mapped to a
dictionary of error messages.
field_classes is a dictionary of model field names mapped to a form
field class.
See ModelForm factory function for example usage.
You must provide the list of fields explicitly, either via keyword arguments
fields or exclude, or the corresponding attributes on the form’s
inner Meta class. See Selecting the fields to use for more
information. Omitting any definition of the fields to use will result in
an ImproperlyConfigured exception.
modelformset_factory¶Returns a FormSet class for the given model class.
Arguments model, form, fields, exclude,
formfield_callback, widgets, localized_fields, labels,
help_texts, error_messages, and field_classes are all passed
through to modelform_factory().
Arguments formset, extra, can_delete, can_order,
max_num, validate_max, min_num, validate_min,
absolute_max, can_delete_extra, and renderer are passed
through to formset_factory(). See
formsets for details.
The edit_only argument allows preventing new objects creation.
See Model formsets for example usage.
inlineformset_factory¶Returns an InlineFormSet using modelformset_factory() with
defaults of formset=BaseInlineFormSet,
can_delete=True, and extra=3.
If your model has more than one ForeignKey to
the parent_model, you must specify a fk_name.
See Inline formsets for example usage.
ott 17, 2025