{"title":"Classes mixins d’édition","version":"3.1","locale":"fr","docname":"ref/class-based-views/mixins-editing","url":"/fr/3.1/ref/class-based-views/mixins-editing/","canonical":"https://djangodocs.dev/fr/3.1/ref/class-based-views/mixins-editing/","summary":"Les classes mixins suivantes sont utilisées pour construire les vues d’édition de Django : django.views.generic.edit.FormMixin…","html":"<h1>Classes mixins d’édition<a class=\"heading-anchor\" href=\"#editing-mixins\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h1>\n<p>Les classes mixins suivantes sont utilisées pour construire les vues d’édition de Django :</p>\n<ul class=\"simple\">\n<li><p><a class=\"reference internal\" href=\"#django.views.generic.edit.FormMixin\" title=\"django.views.generic.edit.FormMixin\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">django.views.generic.edit.FormMixin</span></code></a></p></li>\n<li><p><a class=\"reference internal\" href=\"#django.views.generic.edit.ModelFormMixin\" title=\"django.views.generic.edit.ModelFormMixin\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">django.views.generic.edit.ModelFormMixin</span></code></a></p></li>\n<li><p><a class=\"reference internal\" href=\"#django.views.generic.edit.ProcessFormView\" title=\"django.views.generic.edit.ProcessFormView\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">django.views.generic.edit.ProcessFormView</span></code></a></p></li>\n<li><p><a class=\"reference internal\" href=\"#django.views.generic.edit.DeletionMixin\" title=\"django.views.generic.edit.DeletionMixin\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">django.views.generic.edit.DeletionMixin</span></code></a></p></li>\n</ul>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">Note</p>\n<p>Des exemples de la manière dont ces classes sont combinées pour former des vues d’édition se trouvent dans la documentation sur les <a class=\"reference internal\" href=\"/fr/3.1/ref/class-based-views/generic-editing/\"><span class=\"doc\">Vues génériques d’édition</span></a>.</p>\n</aside>\n<section id=\"formmixin\">\n<h2><code class=\"docutils literal notranslate\"><span class=\"pre\">FormMixin</span></code><a class=\"heading-anchor\" href=\"#formmixin\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h2>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.views.generic.edit.FormMixin\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-prename descclassname\"><span class=\"pre\">django.views.generic.edit.</span></span><span class=\"sig-name descname\"><span class=\"pre\">FormMixin</span></span><a class=\"heading-anchor\" href=\"#django.views.generic.edit.FormMixin\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Une classe mixin fournissant des outils pour la création et l’affichage de formulaires.</p>\n<p><strong>Classes mixins</strong></p>\n<ul class=\"simple\">\n<li><p><a class=\"reference internal\" href=\"/fr/3.1/ref/class-based-views/mixins-simple/#django.views.generic.base.ContextMixin\" title=\"django.views.generic.base.ContextMixin\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">django.views.generic.base.ContextMixin</span></code></a></p></li>\n</ul>\n<p><strong>Méthodes et attributs</strong></p>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.views.generic.edit.FormMixin.initial\">\n<span class=\"sig-name descname\"><span class=\"pre\">initial</span></span><a class=\"heading-anchor\" href=\"#django.views.generic.edit.FormMixin.initial\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Un dictionnaire contenant les données initiales du formulaire.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.views.generic.edit.FormMixin.form_class\">\n<span class=\"sig-name descname\"><span class=\"pre\">form_class</span></span><a class=\"heading-anchor\" href=\"#django.views.generic.edit.FormMixin.form_class\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>La classe de formulaire dont il faut créer une instance.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.views.generic.edit.FormMixin.success_url\">\n<span class=\"sig-name descname\"><span class=\"pre\">success_url</span></span><a class=\"heading-anchor\" href=\"#django.views.generic.edit.FormMixin.success_url\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>L’URL vers laquelle rediriger la réponse lorsque le formulaire est traité avec succès.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.views.generic.edit.FormMixin.prefix\">\n<span class=\"sig-name descname\"><span class=\"pre\">prefix</span></span><a class=\"heading-anchor\" href=\"#django.views.generic.edit.FormMixin.prefix\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Le préfixe <a class=\"reference internal\" href=\"/fr/3.1/ref/forms/api/#django.forms.Form.prefix\" title=\"django.forms.Form.prefix\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">prefix</span></code></a> du formulaire généré.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.views.generic.edit.FormMixin.get_initial\">\n<span class=\"sig-name descname\"><span class=\"pre\">get_initial</span></span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.views.generic.edit.FormMixin.get_initial\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Récupère les données initiales pour le formulaire. Par défaut, cette méthode renvoie une copie de <a class=\"reference internal\" href=\"#django.views.generic.edit.FormMixin.initial\" title=\"django.views.generic.edit.FormMixin.initial\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">initial</span></code></a>.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.views.generic.edit.FormMixin.get_form_class\">\n<span class=\"sig-name descname\"><span class=\"pre\">get_form_class</span></span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.views.generic.edit.FormMixin.get_form_class\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Récupère la classe de formulaire dont il faut créer une instance. Par défaut, <a class=\"reference internal\" href=\"#django.views.generic.edit.FormMixin.form_class\" title=\"django.views.generic.edit.FormMixin.form_class\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">form_class</span></code></a>.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.views.generic.edit.FormMixin.get_form\">\n<span class=\"sig-name descname\"><span class=\"pre\">get_form</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">form_class</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.views.generic.edit.FormMixin.get_form\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Crée une instance de <code class=\"docutils literal notranslate\"><span class=\"pre\">form_class</span></code> en utilisant <a class=\"reference internal\" href=\"#django.views.generic.edit.FormMixin.get_form_kwargs\" title=\"django.views.generic.edit.FormMixin.get_form_kwargs\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">get_form_kwargs()</span></code></a>. Si <code class=\"docutils literal notranslate\"><span class=\"pre\">form_class</span></code> n’est pas fourni, c’est <a class=\"reference internal\" href=\"#django.views.generic.edit.FormMixin.get_form_class\" title=\"django.views.generic.edit.FormMixin.get_form_class\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">get_form_class()</span></code></a> qui sera utilisée.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.views.generic.edit.FormMixin.get_form_kwargs\">\n<span class=\"sig-name descname\"><span class=\"pre\">get_form_kwargs</span></span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.views.generic.edit.FormMixin.get_form_kwargs\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Construit les paramètres nommés requis pour créer une instance de formulaire.</p>\n<p>Le paramètre <code class=\"docutils literal notranslate\"><span class=\"pre\">initial</span></code> est défini à <a class=\"reference internal\" href=\"#django.views.generic.edit.FormMixin.get_initial\" title=\"django.views.generic.edit.FormMixin.get_initial\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">get_initial()</span></code></a>. Si la requête est de type <code class=\"docutils literal notranslate\"><span class=\"pre\">POST</span></code> ou <code class=\"docutils literal notranslate\"><span class=\"pre\">PUT</span></code>, les données de la requête (<code class=\"docutils literal notranslate\"><span class=\"pre\">request.POST</span></code> et <code class=\"docutils literal notranslate\"><span class=\"pre\">request.FILES</span></code>) seront également fournies.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.views.generic.edit.FormMixin.get_prefix\">\n<span class=\"sig-name descname\"><span class=\"pre\">get_prefix</span></span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.views.generic.edit.FormMixin.get_prefix\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Détermine le préfixe <a class=\"reference internal\" href=\"/fr/3.1/ref/forms/api/#django.forms.Form.prefix\" title=\"django.forms.Form.prefix\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">prefix</span></code></a> du formulaire généré. Renvoie <a class=\"reference internal\" href=\"#django.views.generic.edit.FormMixin.prefix\" title=\"django.views.generic.edit.FormMixin.prefix\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">prefix</span></code></a> par défaut.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.views.generic.edit.FormMixin.get_success_url\">\n<span class=\"sig-name descname\"><span class=\"pre\">get_success_url</span></span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.views.generic.edit.FormMixin.get_success_url\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Détermine l’URL vers laquelle rediriger lorsque le formulaire est validé avec succès. Renvoie <a class=\"reference internal\" href=\"#django.views.generic.edit.FormMixin.success_url\" title=\"django.views.generic.edit.FormMixin.success_url\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">success_url</span></code></a> par défaut.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.views.generic.edit.FormMixin.form_valid\">\n<span class=\"sig-name descname\"><span class=\"pre\">form_valid</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">form</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.views.generic.edit.FormMixin.form_valid\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Redirige vers <a class=\"reference internal\" href=\"#django.views.generic.edit.FormMixin.get_success_url\" title=\"django.views.generic.edit.FormMixin.get_success_url\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">get_success_url()</span></code></a>.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.views.generic.edit.FormMixin.form_invalid\">\n<span class=\"sig-name descname\"><span class=\"pre\">form_invalid</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">form</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.views.generic.edit.FormMixin.form_invalid\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Produit la réponse, en plaçant le formulaire non valide dans le contexte.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.views.generic.edit.FormMixin.get_context_data\">\n<span class=\"sig-name descname\"><span class=\"pre\">get_context_data</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">**</span></span><span class=\"n\"><span class=\"pre\">kwargs</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.views.generic.edit.FormMixin.get_context_data\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Appelle <a class=\"reference internal\" href=\"#django.views.generic.edit.FormMixin.get_form\" title=\"django.views.generic.edit.FormMixin.get_form\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">get_form()</span></code></a> et ajoute le résultat aux données de contexte sous le nom <code class=\"docutils literal notranslate\"><span class=\"pre\">form</span></code>.</p>\n</dd></dl>\n\n</dd></dl>\n\n</section>\n<section id=\"modelformmixin\">\n<h2><code class=\"docutils literal notranslate\"><span class=\"pre\">ModelFormMixin</span></code><a class=\"heading-anchor\" href=\"#modelformmixin\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h2>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.views.generic.edit.ModelFormMixin\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-prename descclassname\"><span class=\"pre\">django.views.generic.edit.</span></span><span class=\"sig-name descname\"><span class=\"pre\">ModelFormMixin</span></span><a class=\"heading-anchor\" href=\"#django.views.generic.edit.ModelFormMixin\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Une classe mixin de formulaire qui fonctionne avec les <code class=\"docutils literal notranslate\"><span class=\"pre\">ModelForms</span></code>, plutôt qu’avec des formulaires autonomes.</p>\n<p>Comme il s’agit d’une sous-classe de <a class=\"reference internal\" href=\"/fr/3.1/ref/class-based-views/mixins-single-object/#django.views.generic.detail.SingleObjectMixin\" title=\"django.views.generic.detail.SingleObjectMixin\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">SingleObjectMixin</span></code></a>, les instances de cette classe mixin ont accès aux attributs <a class=\"reference internal\" href=\"/fr/3.1/ref/class-based-views/mixins-single-object/#django.views.generic.detail.SingleObjectMixin.model\" title=\"django.views.generic.detail.SingleObjectMixin.model\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">model</span></code></a> et <a class=\"reference internal\" href=\"/fr/3.1/ref/class-based-views/mixins-single-object/#django.views.generic.detail.SingleObjectMixin.queryset\" title=\"django.views.generic.detail.SingleObjectMixin.queryset\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">queryset</span></code></a> décrivant le type d’objet que le formulaire <code class=\"docutils literal notranslate\"><span class=\"pre\">ModelForm</span></code> manipule.</p>\n<p>Si vous définissez à la fois les attributs <a class=\"reference internal\" href=\"#django.views.generic.edit.ModelFormMixin.fields\" title=\"django.views.generic.edit.ModelFormMixin.fields\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">fields</span></code></a> et <a class=\"reference internal\" href=\"#django.views.generic.edit.FormMixin.form_class\" title=\"django.views.generic.edit.FormMixin.form_class\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">form_class</span></code></a>, 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\"><span class=\"pre\">ImproperlyConfigured</span></code></a> est générée.</p>\n<p><strong>Classes mixins</strong></p>\n<ul class=\"simple\">\n<li><p><a class=\"reference internal\" href=\"#django.views.generic.edit.FormMixin\" title=\"django.views.generic.edit.FormMixin\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">django.views.generic.edit.FormMixin</span></code></a></p></li>\n<li><p><a class=\"reference internal\" href=\"/fr/3.1/ref/class-based-views/mixins-single-object/#django.views.generic.detail.SingleObjectMixin\" title=\"django.views.generic.detail.SingleObjectMixin\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">django.views.generic.detail.SingleObjectMixin</span></code></a></p></li>\n</ul>\n<p><strong>Méthodes et attributs</strong></p>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.views.generic.edit.ModelFormMixin.model\">\n<span class=\"sig-name descname\"><span class=\"pre\">model</span></span><a class=\"heading-anchor\" href=\"#django.views.generic.edit.ModelFormMixin.model\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Une classe de modèle. Peut être fournie explicitement, sinon elle sera déterminée en examinant <code class=\"docutils literal notranslate\"><span class=\"pre\">self.object</span></code> ou <a class=\"reference internal\" href=\"/fr/3.1/ref/class-based-views/mixins-single-object/#django.views.generic.detail.SingleObjectMixin.queryset\" title=\"django.views.generic.detail.SingleObjectMixin.queryset\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">queryset</span></code></a>.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.views.generic.edit.ModelFormMixin.fields\">\n<span class=\"sig-name descname\"><span class=\"pre\">fields</span></span><a class=\"heading-anchor\" href=\"#django.views.generic.edit.ModelFormMixin.fields\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Une liste de noms de champs. Cet attribut est interprété de la même manière que l’attribut <code class=\"docutils literal notranslate\"><span class=\"pre\">Meta.fields</span></code> de la 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\"><span class=\"pre\">ModelForm</span></code></a>.</p>\n<p>Il s’agit d’un attribut obligatoire si vous générez automatiquement la classe de formulaire (par ex. en utilisant <code class=\"docutils literal notranslate\"><span class=\"pre\">model</span></code>). En l’absence de cet attribut, 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\"><span class=\"pre\">ImproperlyConfigured</span></code></a> est générée.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.views.generic.edit.ModelFormMixin.success_url\">\n<span class=\"sig-name descname\"><span class=\"pre\">success_url</span></span><a class=\"heading-anchor\" href=\"#django.views.generic.edit.ModelFormMixin.success_url\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>L’URL vers laquelle rediriger la réponse lorsque le formulaire est traité avec succès.</p>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">success_url</span></code> peut contenir des chaînes de format de type dictionnaire, qui seront substituées en utilisant les attributs de champs de l’objet. Par exemple, vous pourriez utiliser <code class=\"docutils literal notranslate\"><span class=\"pre\">success_url=&quot;/polls/{slug}/&quot;</span></code> pour rediriger vers une URL composée à partir du champ <code class=\"docutils literal notranslate\"><span class=\"pre\">slug</span></code> d’un modèle.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.views.generic.edit.ModelFormMixin.get_form_class\">\n<span class=\"sig-name descname\"><span class=\"pre\">get_form_class</span></span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.views.generic.edit.ModelFormMixin.get_form_class\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Récupère la classe de formulaire dont il faudra créer une instance. Si <a class=\"reference internal\" href=\"#django.views.generic.edit.FormMixin.form_class\" title=\"django.views.generic.edit.FormMixin.form_class\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">form_class</span></code></a> est définie, c’est cette classe qui sera utilisée. Sinon, une instance de formulaire <code class=\"docutils literal notranslate\"><span class=\"pre\">ModelForm</span></code> sera créée en se basant sur le modèle associé au contenu de  <a class=\"reference internal\" href=\"/fr/3.1/ref/class-based-views/mixins-single-object/#django.views.generic.detail.SingleObjectMixin.queryset\" title=\"django.views.generic.detail.SingleObjectMixin.queryset\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">queryset</span></code></a> ou de <a class=\"reference internal\" href=\"/fr/3.1/ref/class-based-views/mixins-single-object/#django.views.generic.detail.SingleObjectMixin.model\" title=\"django.views.generic.detail.SingleObjectMixin.model\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">model</span></code></a>, en fonction de l’attribut qui est défini.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.views.generic.edit.ModelFormMixin.get_form_kwargs\">\n<span class=\"sig-name descname\"><span class=\"pre\">get_form_kwargs</span></span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.views.generic.edit.ModelFormMixin.get_form_kwargs\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Ajoute l’instance actuelle (<code class=\"docutils literal notranslate\"><span class=\"pre\">self.object</span></code>) au contenu standard de <a class=\"reference internal\" href=\"#django.views.generic.edit.FormMixin.get_form_kwargs\" title=\"django.views.generic.edit.FormMixin.get_form_kwargs\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">get_form_kwargs()</span></code></a>.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.views.generic.edit.ModelFormMixin.get_success_url\">\n<span class=\"sig-name descname\"><span class=\"pre\">get_success_url</span></span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.views.generic.edit.ModelFormMixin.get_success_url\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Détermine l’URL vers laquelle rediriger lorsque le formulaire est validé avec succès. Renvoie <a class=\"reference internal\" href=\"#django.views.generic.edit.ModelFormMixin.success_url\" title=\"django.views.generic.edit.ModelFormMixin.success_url\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">django.views.generic.edit.ModelFormMixin.success_url</span></code></a> s’il est défini ; sinon, essaie d’employer la valeur <code class=\"docutils literal notranslate\"><span class=\"pre\">get_absolute_url()</span></code> de l’objet.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.views.generic.edit.ModelFormMixin.form_valid\">\n<span class=\"sig-name descname\"><span class=\"pre\">form_valid</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">form</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.views.generic.edit.ModelFormMixin.form_valid\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Enregistre l’instance de formulaire, définit l’objet en cours de la vue et redirige vers <a class=\"reference internal\" href=\"#django.views.generic.edit.FormMixin.get_success_url\" title=\"django.views.generic.edit.FormMixin.get_success_url\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">get_success_url()</span></code></a>.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.views.generic.edit.ModelFormMixin.form_invalid\">\n<span class=\"sig-name descname\"><span class=\"pre\">form_invalid</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">form</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.views.generic.edit.ModelFormMixin.form_invalid\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Produit la réponse, en plaçant le formulaire non valide dans le contexte.</p>\n</dd></dl>\n\n</dd></dl>\n\n</section>\n<section id=\"processformview\">\n<h2><code class=\"docutils literal notranslate\"><span class=\"pre\">ProcessFormView</span></code><a class=\"heading-anchor\" href=\"#processformview\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h2>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.views.generic.edit.ProcessFormView\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-prename descclassname\"><span class=\"pre\">django.views.generic.edit.</span></span><span class=\"sig-name descname\"><span class=\"pre\">ProcessFormView</span></span><a class=\"heading-anchor\" href=\"#django.views.generic.edit.ProcessFormView\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Une classe mixin qui fournit la gestion de flux habituelle des requêtes HTTP GET et POST.</p>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">Note</p>\n<p>Cette classe est nommée <code class=\"docutils literal notranslate\"><span class=\"pre\">ProcessFormView</span></code> et hérite directement de <a class=\"reference internal\" href=\"/fr/3.1/ref/class-based-views/base/#django.views.generic.base.View\" title=\"django.views.generic.base.View\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">django.views.generic.base.View</span></code></a>, mais elle ne peut pas être utilisée de manière indépendante, ce qui fait qu’elle est plutôt considérée comme une classe mixin.</p>\n</aside>\n<p><strong>Étend</strong></p>\n<ul class=\"simple\">\n<li><p><a class=\"reference internal\" href=\"/fr/3.1/ref/class-based-views/base/#django.views.generic.base.View\" title=\"django.views.generic.base.View\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">django.views.generic.base.View</span></code></a></p></li>\n</ul>\n<p><strong>Méthodes et attributs</strong></p>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.views.generic.edit.ProcessFormView.get\">\n<span class=\"sig-name descname\"><span class=\"pre\">get</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">request</span></span></em>, <em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">*</span></span><span class=\"n\"><span class=\"pre\">args</span></span></em>, <em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">**</span></span><span class=\"n\"><span class=\"pre\">kwargs</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.views.generic.edit.ProcessFormView.get\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Produit une réponse en utilisant le contexte créé avec <a class=\"reference internal\" href=\"#django.views.generic.edit.FormMixin.get_context_data\" title=\"django.views.generic.edit.FormMixin.get_context_data\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">get_context_data()</span></code></a>.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.views.generic.edit.ProcessFormView.post\">\n<span class=\"sig-name descname\"><span class=\"pre\">post</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">request</span></span></em>, <em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">*</span></span><span class=\"n\"><span class=\"pre\">args</span></span></em>, <em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">**</span></span><span class=\"n\"><span class=\"pre\">kwargs</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.views.generic.edit.ProcessFormView.post\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Construit un formulaire, vérifie la validité du formulaire et le traite en conséquence.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.views.generic.edit.ProcessFormView.put\">\n<span class=\"sig-name descname\"><span class=\"pre\">put</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">*</span></span><span class=\"n\"><span class=\"pre\">args</span></span></em>, <em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">**</span></span><span class=\"n\"><span class=\"pre\">kwargs</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.views.generic.edit.ProcessFormView.put\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>L’action <code class=\"docutils literal notranslate\"><span class=\"pre\">PUT</span></code> est également gérée, mais ne fait que transmettre tous les paramètres à <a class=\"reference internal\" href=\"#django.views.generic.edit.ProcessFormView.post\" title=\"django.views.generic.edit.ProcessFormView.post\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">post()</span></code></a>.</p>\n</dd></dl>\n\n</dd></dl>\n\n</section>\n<section id=\"deletionmixin\">\n<h2><code class=\"docutils literal notranslate\"><span class=\"pre\">DeletionMixin</span></code><a class=\"heading-anchor\" href=\"#deletionmixin\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h2>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.views.generic.edit.DeletionMixin\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-prename descclassname\"><span class=\"pre\">django.views.generic.edit.</span></span><span class=\"sig-name descname\"><span class=\"pre\">DeletionMixin</span></span><a class=\"heading-anchor\" href=\"#django.views.generic.edit.DeletionMixin\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Permet la gestion de l’action http <code class=\"docutils literal notranslate\"><span class=\"pre\">DELETE</span></code>.</p>\n<p><strong>Méthodes et attributs</strong></p>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.views.generic.edit.DeletionMixin.success_url\">\n<span class=\"sig-name descname\"><span class=\"pre\">success_url</span></span><a class=\"heading-anchor\" href=\"#django.views.generic.edit.DeletionMixin.success_url\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>L’URL vers laquelle rediriger lorsque l’objet concerné a été supprimé avec succès.</p>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">success_url</span></code> peut contenir des chaînes de format de type dictionnaire, qui seront substituées en utilisant les attributs de champs de l’objet. Par exemple, vous pourriez utiliser <code class=\"docutils literal notranslate\"><span class=\"pre\">success_url=&quot;/parent/{parent_id}/&quot;</span></code> pour rediriger vers une URL composée à partir du champ <code class=\"docutils literal notranslate\"><span class=\"pre\">parent_id</span></code> d’un modèle.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.views.generic.edit.DeletionMixin.delete\">\n<span class=\"sig-name descname\"><span class=\"pre\">delete</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">request</span></span></em>, <em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">*</span></span><span class=\"n\"><span class=\"pre\">args</span></span></em>, <em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">**</span></span><span class=\"n\"><span class=\"pre\">kwargs</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.views.generic.edit.DeletionMixin.delete\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Récupère l’objet cible et appelle sa méthode <code class=\"docutils literal notranslate\"><span class=\"pre\">delete()</span></code>, puis redirige vers l’URL de succès.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.views.generic.edit.DeletionMixin.get_success_url\">\n<span class=\"sig-name descname\"><span class=\"pre\">get_success_url</span></span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.views.generic.edit.DeletionMixin.get_success_url\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Renvoie l’URL vers laquelle rediriger lorsque l’objet concerné a été supprimé avec succès. Renvoie <a class=\"reference internal\" href=\"#django.views.generic.edit.DeletionMixin.success_url\" title=\"django.views.generic.edit.DeletionMixin.success_url\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">success_url</span></code></a> par défaut.</p>\n</dd></dl>\n\n</dd></dl>\n\n</section>","rootId":"editing-mixins","toc":[{"title":"FormMixin","anchor":"formmixin","children":[]},{"title":"ModelFormMixin","anchor":"modelformmixin","children":[]},{"title":"ProcessFormView","anchor":"processformview","children":[]},{"title":"DeletionMixin","anchor":"deletionmixin","children":[]}],"breadcrumbs":[{"docname":"ref/index","title":"Référence de l’API","url":"/fr/3.1/ref/"},{"docname":"ref/class-based-views/index","title":"API des vues intégrées fondées sur les classes","url":"/fr/3.1/ref/class-based-views/"},{"docname":"ref/class-based-views/mixins","title":"Vues « mixins » fondées sur les classes","url":"/fr/3.1/ref/class-based-views/mixins/"}],"prev":{"docname":"ref/class-based-views/mixins-multiple-object","title":"Classes mixins pour objets multiples","url":"/fr/3.1/ref/class-based-views/mixins-multiple-object/"},"next":{"docname":"ref/class-based-views/mixins-date-based","title":"Mixins basées sur les dates","url":"/fr/3.1/ref/class-based-views/mixins-date-based/"},"formats":{"html":"/fr/3.1/ref/class-based-views/mixins-editing/","markdown":"/fr/3.1/ref/class-based-views/mixins-editing.md","json":"/fr/3.1/ref/class-based-views/mixins-editing.json"},"source":"https://github.com/django/django/blob/stable/3.1.x/docs/ref/class-based-views/mixins-editing.txt","official":"https://docs.djangoproject.com/fr/3.1/ref/class-based-views/mixins-editing/","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"]}