{"title":"Fonctions de formulaires de modèles","version":"3.1","locale":"fr","docname":"ref/forms/models","url":"/fr/3.1/ref/forms/models/","canonical":"https://djangodocs.dev/fr/3.1/ref/forms/models/","summary":"La référence de l’API des formulaires de modèles. Pour du contenu d’initiation au sujet des formulaires de modèles, consultez le guide thématique Création…","html":"<h1>Fonctions de formulaires de modèles<a class=\"heading-anchor\" href=\"#model-form-functions\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h1>\n<p>La référence de l’API des formulaires de modèles. Pour du contenu d’initiation au sujet des formulaires de modèles, consultez le guide thématique <a class=\"reference internal\" href=\"/fr/3.1/topics/forms/modelforms/\"><span class=\"doc\">Création de formulaires à partir de modèles</span></a>.</p>\n<section id=\"modelform-factory\">\n<span id=\"module-django.forms.models\"></span><h2><code class=\"docutils literal notranslate\">modelform_factory</code><a class=\"heading-anchor\" href=\"#modelform-factory\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h2>\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.forms.models.modelform_factory\">\n<span class=\"sig-name descname\">modelform_factory</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">model</em>, <em class=\"sig-param\">form<span class=\"o\">=</span><span class=\"default_value\">ModelForm</span></em>, <em class=\"sig-param\">fields<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">exclude<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">formfield_callback<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">widgets<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">localized_fields<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">labels<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">help_texts<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">error_messages<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">field_classes<span class=\"o\">=</span><span class=\"default_value\">None</span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.forms.models.modelform_factory\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Renvoie une classe <a class=\"reference internal\" href=\"/fr/3.1/topics/forms/modelforms/#django.forms.ModelForm\" title=\"django.forms.ModelForm\"><code class=\"xref py py-class docutils literal notranslate\">ModelForm</code></a> pour le modèle donné. Le paramètre facultatif <code class=\"docutils literal notranslate\">form</code> permet d’indiquer une classe de base pour la construction du <code class=\"docutils literal notranslate\">ModelForm</code>.</p>\n<p><code class=\"docutils literal notranslate\">fields</code> est une liste facultative de noms de champs. Quand elle est présente, seuls les champs de cette liste seront inclus dans le formulaire renvoyé.</p>\n<p><code class=\"docutils literal notranslate\">exclude</code> est 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ètre <code class=\"docutils literal notranslate\">fields</code>.</p>\n<p><code class=\"docutils literal notranslate\">formfield_callback</code> est un objet exécutable acceptant un champ de modèle et renvoyant un champ de formulaire.</p>\n<p><code class=\"docutils literal notranslate\">widgets</code> est un dictionnaire faisant correspondre des noms de champs de modèle à des composants de formulaires.</p>\n<p><code class=\"docutils literal notranslate\">localized_fields</code> est une liste de noms de champs devant être régionalisés.</p>\n<p><code class=\"docutils literal notranslate\">labels</code> est un dictionnaire faisant correspondre des noms de champs de modèle à des étiquettes.</p>\n<p><code class=\"docutils literal notranslate\">help_texts</code> est un dictionnaire faisant correspondre des noms de champs de modèle à des textes d’aide.</p>\n<p><code class=\"docutils literal notranslate\">error_messages</code> est un dictionnaire faisant correspondre des noms de champs de modèle à des dictionnaires de messages d’erreur.</p>\n<p><code class=\"docutils literal notranslate\">field_classes</code> est un dictionnaire faisant correspondre des noms de champs de modèle à une classe de champ de formulaire.</p>\n<p>Voir <a class=\"reference internal\" href=\"/fr/3.1/topics/forms/modelforms/#modelforms-factory\"><span class=\"std std-ref\">Fonction de fabrique de ModelForm</span></a> pour des exemples d’utilisation.</p>\n<p>Vous devez définir explicitement la liste des champs, soit par les paramètres nommés <code class=\"docutils literal notranslate\">fields</code> ou <code class=\"docutils literal notranslate\">exclude</code>, soit par les attributs de même nom de la classe interne de formulaire <code class=\"docutils literal notranslate\">Meta</code>. Voir <a class=\"reference internal\" href=\"/fr/3.1/topics/forms/modelforms/#modelforms-selecting-fields\"><span class=\"std std-ref\">Sélection des champs à utiliser</span></a> pour plus d’informations. En omettant toute définition de champs à utiliser, cela aboutira à une exception <a class=\"reference internal\" href=\"/fr/3.1/ref/exceptions/#django.core.exceptions.ImproperlyConfigured\" title=\"django.core.exceptions.ImproperlyConfigured\"><code class=\"xref py py-exc docutils literal notranslate\">ImproperlyConfigured</code></a>.</p>\n</dd></dl>\n\n</section>\n<section id=\"modelformset-factory\">\n<h2><code class=\"docutils literal notranslate\">modelformset_factory</code><a class=\"heading-anchor\" href=\"#modelformset-factory\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h2>\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.forms.models.modelformset_factory\">\n<span class=\"sig-name descname\">modelformset_factory</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">model</em>, <em class=\"sig-param\">form<span class=\"o\">=</span><span class=\"default_value\">ModelForm</span></em>, <em class=\"sig-param\">formfield_callback<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">formset<span class=\"o\">=</span><span class=\"default_value\">BaseModelFormSet</span></em>, <em class=\"sig-param\">extra<span class=\"o\">=</span><span class=\"default_value\">1</span></em>, <em class=\"sig-param\">can_delete<span class=\"o\">=</span><span class=\"default_value\">False</span></em>, <em class=\"sig-param\">can_order<span class=\"o\">=</span><span class=\"default_value\">False</span></em>, <em class=\"sig-param\">max_num<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">fields<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">exclude<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">widgets<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">validate_max<span class=\"o\">=</span><span class=\"default_value\">False</span></em>, <em class=\"sig-param\">localized_fields<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">labels<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">help_texts<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">error_messages<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">min_num<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">validate_min<span class=\"o\">=</span><span class=\"default_value\">False</span></em>, <em class=\"sig-param\">field_classes<span class=\"o\">=</span><span class=\"default_value\">None</span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.forms.models.modelformset_factory\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Renvoie une classe <code class=\"docutils literal notranslate\">FormSet</code> pour la classe de modèle donnée.</p>\n<p>Les paramètres <code class=\"docutils literal notranslate\">model</code>, <code class=\"docutils literal notranslate\">form</code>, <code class=\"docutils literal notranslate\">fields</code>, <code class=\"docutils literal notranslate\">exclude</code>, <code class=\"docutils literal notranslate\">formfield_callback</code>, <code class=\"docutils literal notranslate\">widgets</code>, <code class=\"docutils literal notranslate\">localized_fields</code>, <code class=\"docutils literal notranslate\">labels</code>, <code class=\"docutils literal notranslate\">help_texts</code>, <code class=\"docutils literal notranslate\">error_messages</code> et <code class=\"docutils literal notranslate\">field_classes</code> sont tous transmis à <a class=\"reference internal\" href=\"#django.forms.models.modelform_factory\" title=\"django.forms.models.modelform_factory\"><code class=\"xref py py-func docutils literal notranslate\">modelform_factory()</code></a>.</p>\n<p>Les paramètres <code class=\"docutils literal notranslate\">formset</code>, <code class=\"docutils literal notranslate\">extra</code>, <code class=\"docutils literal notranslate\">can_delete</code>, <code class=\"docutils literal notranslate\">can_order</code>, <code class=\"docutils literal notranslate\">max_num</code>, <code class=\"docutils literal notranslate\">validate_max</code>, <code class=\"docutils literal notranslate\">min_num</code> et <code class=\"docutils literal notranslate\">validate_min</code> sont transmis à <a class=\"reference internal\" href=\"/fr/3.1/ref/forms/formsets/#django.forms.formsets.formset_factory\" title=\"django.forms.formsets.formset_factory\"><code class=\"xref py py-func docutils literal notranslate\">formset_factory()</code></a>. Voir <a class=\"reference internal\" href=\"/fr/3.1/topics/forms/formsets/\"><span class=\"doc\">Jeux de formulaires</span></a> pour plus de détails.</p>\n<p>Voir <a class=\"reference internal\" href=\"/fr/3.1/topics/forms/modelforms/#model-formsets\"><span class=\"std std-ref\">Formulaires groupés de modèles</span></a> pour des exemples d’utilisation.</p>\n</dd></dl>\n\n</section>\n<section id=\"inlineformset-factory\">\n<h2><code class=\"docutils literal notranslate\">inlineformset_factory</code><a class=\"heading-anchor\" href=\"#inlineformset-factory\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h2>\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.forms.models.inlineformset_factory\">\n<span class=\"sig-name descname\">inlineformset_factory</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">parent_model</em>, <em class=\"sig-param\">model</em>, <em class=\"sig-param\">form<span class=\"o\">=</span><span class=\"default_value\">ModelForm</span></em>, <em class=\"sig-param\">formset<span class=\"o\">=</span><span class=\"default_value\">BaseInlineFormSet</span></em>, <em class=\"sig-param\">fk_name<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">fields<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">exclude<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">extra<span class=\"o\">=</span><span class=\"default_value\">3</span></em>, <em class=\"sig-param\">can_order<span class=\"o\">=</span><span class=\"default_value\">False</span></em>, <em class=\"sig-param\">can_delete<span class=\"o\">=</span><span class=\"default_value\">True</span></em>, <em class=\"sig-param\">max_num<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">formfield_callback<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">widgets<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">validate_max<span class=\"o\">=</span><span class=\"default_value\">False</span></em>, <em class=\"sig-param\">localized_fields<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">labels<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">help_texts<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">error_messages<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">min_num<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">validate_min<span class=\"o\">=</span><span class=\"default_value\">False</span></em>, <em class=\"sig-param\">field_classes<span class=\"o\">=</span><span class=\"default_value\">None</span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.forms.models.inlineformset_factory\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Renvoie un <code class=\"docutils literal notranslate\">InlineFormSet</code> en utilisant <a class=\"reference internal\" href=\"#django.forms.models.modelformset_factory\" title=\"django.forms.models.modelformset_factory\"><code class=\"xref py py-func docutils literal notranslate\">modelformset_factory()</code></a> avec les valeurs par défaut <code class=\"docutils literal notranslate\">formset=</code><a class=\"reference internal\" href=\"/fr/3.1/topics/forms/modelforms/#django.forms.models.BaseInlineFormSet\" title=\"django.forms.models.BaseInlineFormSet\"><code class=\"xref py py-class docutils literal notranslate\">BaseInlineFormSet</code></a>, <code class=\"docutils literal notranslate\">can_delete=True</code> et <code class=\"docutils literal notranslate\">extra=3</code>.</p>\n<p>Si le modèle possède plus d’une clé étrangère <a class=\"reference internal\" href=\"/fr/3.1/ref/models/fields/#django.db.models.ForeignKey\" title=\"django.db.models.ForeignKey\"><code class=\"xref py py-class docutils literal notranslate\">ForeignKey</code></a> vers <code class=\"docutils literal notranslate\">parent_model</code>, vous devez renseigner le paramètre <code class=\"docutils literal notranslate\">fk_name</code>.</p>\n<p>Voir <a class=\"reference internal\" href=\"/fr/3.1/topics/forms/modelforms/#inline-formsets\"><span class=\"std std-ref\">Sous-formulaires groupés</span></a> pour des exemples d’utilisation.</p>\n</dd></dl>\n\n</section>","rootId":"model-form-functions","toc":[{"title":"modelform_factory","anchor":"modelform-factory","children":[]},{"title":"modelformset_factory","anchor":"modelformset-factory","children":[]},{"title":"inlineformset_factory","anchor":"inlineformset-factory","children":[]}],"breadcrumbs":[{"docname":"ref/index","title":"Référence de l’API","url":"/fr/3.1/ref/"},{"docname":"ref/forms/index","title":"Formulaires","url":"/fr/3.1/ref/forms/"}],"prev":{"docname":"ref/forms/fields","title":"Champs de formulaires","url":"/fr/3.1/ref/forms/fields/"},"next":{"docname":"ref/forms/formsets","title":"Fonctions de formulaires groupés","url":"/fr/3.1/ref/forms/formsets/"},"formats":{"html":"/fr/3.1/ref/forms/models/","markdown":"/fr/3.1/ref/forms/models.md","json":"/fr/3.1/ref/forms/models.json"},"source":"https://github.com/django/django/blob/stable/3.1.x/docs/ref/forms/models.txt","official":"https://docs.djangoproject.com/fr/3.1/ref/forms/models/","inVersions":["6.1","6.0","5.2","5.1","5.0","4.2","4.1","4.0","3.2","3.1","3.0","2.2","2.1","2.0","1.11","1.10","1.9"],"inLocales":["en","zh-hans","fr","ja","id","pt-br","ko","es","el","pl"]}