Formulaires de modèles¶
La référence de l’API des formulaires de modèles ModelForm. Pour du contenu d’initiation au sujet de leur utilisation, consultez le guide thématique Création de formulaires à partir de modèles.
L’API Meta des formulaires de modèles¶
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_messagesand then finally on the default error messages for that field type.
exclude¶
- ModelFormOptions.exclude¶
A tuple or list of
modelfield names to be excluded from the form.Either
fieldsorexcludemust be set. If neither are set, anImproperlyConfiguredexception will be raised. Ifexcludeis set andfieldsis 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
Fieldclass, which overrides theform_classused 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
modelfield 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
fieldsorexcludemust be set. If neither are set, anImproperlyConfiguredexception will be raised.
formfield_callback¶
- ModelFormOptions.formfield_callback¶
A function or callable that takes a model field and returns a
django.forms.Fieldobject.
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_nameand then the field’s attribute name.
localized_fields¶
- ModelFormOptions.localized_fields¶
A tuple or list of
modelfield 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.Modelto 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)[source]¶
Renvoie une classe
ModelFormpour le modèle donné. Le paramètre facultatifformpermet d’indiquer une classe de base pour la construction duModelForm.fieldsest une liste facultative de noms de champs. Quand elle est présente, seuls les champs de cette liste seront inclus dans le formulaire renvoyé.excludeest une liste facultative de noms de champs. Quand elle est présente, les champs de cette liste sont exclus du formulaire renvoyé, même s’ils figurent dans le paramètrefields.formfield_callbackest un objet exécutable acceptant un champ de modèle et renvoyant un champ de formulaire.widgetsest un dictionnaire faisant correspondre des noms de champs de modèle à des composants de formulaires.localized_fieldsest une liste de noms de champs devant être régionalisés.labelsest un dictionnaire faisant correspondre des noms de champs de modèle à des étiquettes.help_textsest un dictionnaire faisant correspondre des noms de champs de modèle à des textes d’aide.error_messagesest un dictionnaire faisant correspondre des noms de champs de modèle à des dictionnaires de messages d’erreur.field_classesest un dictionnaire faisant correspondre des noms de champs de modèle à une classe de champ de formulaire.Voir Fonction de fabrique de ModelForm pour des exemples d’utilisation.
Vous devez définir explicitement la liste des champs, soit par les paramètres nommés
fieldsouexclude, soit par les attributs de même nom de la classe interne de formulaireMeta. Voir Sélection des champs à utiliser pour plus d’informations. En omettant toute définition de champs à utiliser, cela aboutira à une exceptionImproperlyConfigured.
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)[source]¶
Renvoie une classe
FormSetpour la classe de modèle donnée.Les paramètres
model,form,fields,exclude,formfield_callback,widgets,localized_fields,labels,help_texts,error_messagesetfield_classessont tous transmis àmodelform_factory().Les paramètres
formset,extra,can_delete,can_order,max_num,validate_max,min_num,validate_min,absolute_max,can_delete_extraetrenderersont transmis àformset_factory(). Voir Jeux de formulaires pour plus de détails.L’argument
edit_onlypermet d’empêcher la création de nouveaux objets.Voir Formulaires groupés de modèles pour des exemples d’utilisation.
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)[source]¶
Renvoie un
InlineFormSeten utilisantmodelformset_factory()avec les valeurs par défautformset=BaseInlineFormSet,can_delete=Trueetextra=3.Si le modèle possède plus d’une clé étrangère
ForeignKeyversparent_model, vous devez renseigner le paramètrefk_name.Voir Sous-formulaires groupés pour des exemples d’utilisation.