{"title":"Champs de formulaires","version":"2.1","locale":"fr","docname":"ref/forms/fields","url":"/fr/2.1/ref/forms/fields/","canonical":"https://djangodocs.dev/fr/2.1/ref/forms/fields/","summary":"class Field ( ** kwargs ) Lien vers cette définition # Lorsque vous créez une classe Form , la partie la plus importante est de définir les champs du formulaire.…","html":"<span id=\"form-fields\"></span><h1>Champs de formulaires<a class=\"heading-anchor\" href=\"#module-django.forms.fields\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h1>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.forms.Field\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">Field</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.forms.Field\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Lorsque vous créez une classe <code class=\"docutils literal notranslate\"><span class=\"pre\">Form</span></code>, la partie la plus importante est de définir les champs du formulaire. Chaque champ possède sa propre logique de validation, ainsi que quelques autres points d’entrée.</p>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.forms.Field.clean\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">Field.</span></span><span class=\"sig-name descname\"><span class=\"pre\">clean</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">value</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.forms.Field.clean\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Même si l’emploi principal des classes <code class=\"docutils literal notranslate\"><span class=\"pre\">Field</span></code> concerne la définition de classes <code class=\"docutils literal notranslate\"><span class=\"pre\">Form</span></code>, il est aussi possible de les instancier et de les utiliser directement pour obtenir une meilleure idée de leur fonctionnement. Chaque instance <code class=\"docutils literal notranslate\"><span class=\"pre\">Field</span></code> possède une méthode <code class=\"docutils literal notranslate\"><span class=\"pre\">clean()</span></code> acceptant un seul paramètre et qui renvoie une valeur « nettoyée » ou qui génère une exception <code class=\"docutils literal notranslate\"><span class=\"pre\">django.forms.ValidationError</span></code>:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">forms</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">f</span> <span class=\"o\">=</span> <span class=\"n\">forms</span><span class=\"o\">.</span><span class=\"n\">EmailField</span><span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">f</span><span class=\"o\">.</span><span class=\"n\">clean</span><span class=\"p\">(</span><span class=\"s1\">&#39;foo@example.com&#39;</span><span class=\"p\">)</span>\n<span class=\"go\">&#39;foo@example.com&#39;</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">f</span><span class=\"o\">.</span><span class=\"n\">clean</span><span class=\"p\">(</span><span class=\"s1\">&#39;invalid email address&#39;</span><span class=\"p\">)</span>\n<span class=\"gt\">Traceback (most recent call last):</span>\n<span class=\"c\">...</span>\n<span class=\"gr\">ValidationError</span>: <span class=\"n\">[&#39;Enter a valid email address.&#39;]</span>\n</code></pre></div>\n<section id=\"core-field-arguments\">\n<span id=\"id1\"></span><h2>Paramètres principaux des champs<a class=\"heading-anchor\" href=\"#core-field-arguments\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Chaque constructeur de classe <code class=\"docutils literal notranslate\"><span class=\"pre\">Field</span></code> accepte au moins trois paramètres. Certaines classes acceptent d’autres paramètres spécifiques à la classe, mais ceux qui suivent sont <em>toujours</em> acceptés :</p>\n<section id=\"required\">\n<h3><code class=\"docutils literal notranslate\"><span class=\"pre\">required</span></code><a class=\"heading-anchor\" href=\"#required\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.forms.Field.required\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">Field.</span></span><span class=\"sig-name descname\"><span class=\"pre\">required</span></span><a class=\"heading-anchor\" href=\"#django.forms.Field.required\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Par défaut, chaque classe <code class=\"docutils literal notranslate\"><span class=\"pre\">Field</span></code> suppose qu’une valeur est obligatoire, ce qui fait que si vous ne fournissez pas de valeur (que ce soit <code class=\"docutils literal notranslate\"><span class=\"pre\">None</span></code> ou une chaîne vide(<code class=\"docutils literal notranslate\"><span class=\"pre\">&quot;&quot;</span></code>)), <code class=\"docutils literal notranslate\"><span class=\"pre\">clean()</span></code> génère une exception <code class=\"docutils literal notranslate\"><span class=\"pre\">ValidationError</span></code>:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">forms</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">f</span> <span class=\"o\">=</span> <span class=\"n\">forms</span><span class=\"o\">.</span><span class=\"n\">CharField</span><span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">f</span><span class=\"o\">.</span><span class=\"n\">clean</span><span class=\"p\">(</span><span class=\"s1\">&#39;foo&#39;</span><span class=\"p\">)</span>\n<span class=\"go\">&#39;foo&#39;</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">f</span><span class=\"o\">.</span><span class=\"n\">clean</span><span class=\"p\">(</span><span class=\"s1\">&#39;&#39;</span><span class=\"p\">)</span>\n<span class=\"gt\">Traceback (most recent call last):</span>\n<span class=\"c\">...</span>\n<span class=\"gr\">ValidationError</span>: <span class=\"n\">[&#39;This field is required.&#39;]</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">f</span><span class=\"o\">.</span><span class=\"n\">clean</span><span class=\"p\">(</span><span class=\"kc\">None</span><span class=\"p\">)</span>\n<span class=\"gt\">Traceback (most recent call last):</span>\n<span class=\"c\">...</span>\n<span class=\"gr\">ValidationError</span>: <span class=\"n\">[&#39;This field is required.&#39;]</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">f</span><span class=\"o\">.</span><span class=\"n\">clean</span><span class=\"p\">(</span><span class=\"s1\">&#39; &#39;</span><span class=\"p\">)</span>\n<span class=\"go\">&#39; &#39;</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">f</span><span class=\"o\">.</span><span class=\"n\">clean</span><span class=\"p\">(</span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"go\">&#39;0&#39;</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">f</span><span class=\"o\">.</span><span class=\"n\">clean</span><span class=\"p\">(</span><span class=\"kc\">True</span><span class=\"p\">)</span>\n<span class=\"go\">&#39;True&#39;</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">f</span><span class=\"o\">.</span><span class=\"n\">clean</span><span class=\"p\">(</span><span class=\"kc\">False</span><span class=\"p\">)</span>\n<span class=\"go\">&#39;False&#39;</span>\n</code></pre></div>\n<p>Pour indiquer qu’un champ n’est <em>pas</em> obligatoire, passez <code class=\"docutils literal notranslate\"><span class=\"pre\">required=False</span></code> au constructeur de <code class=\"docutils literal notranslate\"><span class=\"pre\">Field</span></code>:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">f</span> <span class=\"o\">=</span> <span class=\"n\">forms</span><span class=\"o\">.</span><span class=\"n\">CharField</span><span class=\"p\">(</span><span class=\"n\">required</span><span class=\"o\">=</span><span class=\"kc\">False</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">f</span><span class=\"o\">.</span><span class=\"n\">clean</span><span class=\"p\">(</span><span class=\"s1\">&#39;foo&#39;</span><span class=\"p\">)</span>\n<span class=\"go\">&#39;foo&#39;</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">f</span><span class=\"o\">.</span><span class=\"n\">clean</span><span class=\"p\">(</span><span class=\"s1\">&#39;&#39;</span><span class=\"p\">)</span>\n<span class=\"go\">&#39;&#39;</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">f</span><span class=\"o\">.</span><span class=\"n\">clean</span><span class=\"p\">(</span><span class=\"kc\">None</span><span class=\"p\">)</span>\n<span class=\"go\">&#39;&#39;</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">f</span><span class=\"o\">.</span><span class=\"n\">clean</span><span class=\"p\">(</span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"go\">&#39;0&#39;</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">f</span><span class=\"o\">.</span><span class=\"n\">clean</span><span class=\"p\">(</span><span class=\"kc\">True</span><span class=\"p\">)</span>\n<span class=\"go\">&#39;True&#39;</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">f</span><span class=\"o\">.</span><span class=\"n\">clean</span><span class=\"p\">(</span><span class=\"kc\">False</span><span class=\"p\">)</span>\n<span class=\"go\">&#39;False&#39;</span>\n</code></pre></div>\n<p>Lorsque <code class=\"docutils literal notranslate\"><span class=\"pre\">required=False</span></code> est défini pour un champ <code class=\"docutils literal notranslate\"><span class=\"pre\">Field</span></code> et que vous fournissez une valeur vide à <code class=\"docutils literal notranslate\"><span class=\"pre\">clean()</span></code>, la valeur renvoyée est une valeur vide <em>normalisée</em> et aucune exception <code class=\"docutils literal notranslate\"><span class=\"pre\">ValidationError</span></code> n’est générée. Pour <code class=\"docutils literal notranslate\"><span class=\"pre\">CharField</span></code>, il s’agit d’une chaîne vide. Pour les autres classes <code class=\"docutils literal notranslate\"><span class=\"pre\">Field</span></code>, il peut s’agir de <code class=\"docutils literal notranslate\"><span class=\"pre\">None</span></code> (cela varie en fonction du champ).</p>\n<p>Les composants des champs de formulaire obligatoires possèdent l’attribut HTML <code class=\"docutils literal notranslate\"><span class=\"pre\">required</span></code>. Il est possible de désactiver cela en définissant l’attribut <a class=\"reference internal\" href=\"/fr/2.1/ref/forms/api/#django.forms.Form.use_required_attribute\" title=\"django.forms.Form.use_required_attribute\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">Form.use_required_attribute</span></code></a> à <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code>. L’attribut <code class=\"docutils literal notranslate\"><span class=\"pre\">required</span></code> n’est pas ajouté aux formulaires groupés car la validation des navigateurs n’est pas toujours correcte quand on ajoute ou qu’on supprime de tels formulaires.</p>\n</section>\n<section id=\"label\">\n<h3><code class=\"docutils literal notranslate\"><span class=\"pre\">label</span></code><a class=\"heading-anchor\" href=\"#label\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.forms.Field.label\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">Field.</span></span><span class=\"sig-name descname\"><span class=\"pre\">label</span></span><a class=\"heading-anchor\" href=\"#django.forms.Field.label\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Le paramètre <code class=\"docutils literal notranslate\"><span class=\"pre\">label</span></code> permet d’indiquer une étiquette conviviale pour le champ. Cette valeur est utilisée lorsque le champ <code class=\"docutils literal notranslate\"><span class=\"pre\">Field</span></code> est affiché dans un formulaire <code class=\"docutils literal notranslate\"><span class=\"pre\">Form</span></code>.</p>\n<p>Comme expliqué dans « Affichage des formulaires en HTML » ci-dessus, l’étiquette par défaut d’un champ <code class=\"docutils literal notranslate\"><span class=\"pre\">Field</span></code> est générée à partir du nom de champ en convertissant tous les soulignements en espaces et en mettant en majuscule la première lettre. Donnez une valeur à <code class=\"docutils literal notranslate\"><span class=\"pre\">label</span></code> si ce comportement par défaut ne produit pas un résultat convenable.</p>\n<p>Voici un exemple complet de formulaire implémentant  <code class=\"docutils literal notranslate\"><span class=\"pre\">label</span></code> pour deux de ses champs. Nous avons indiqué <code class=\"docutils literal notranslate\"><span class=\"pre\">auto_id=False</span></code> pour simplifier l’affichage :</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">forms</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">CommentForm</span><span class=\"p\">(</span><span class=\"n\">forms</span><span class=\"o\">.</span><span class=\"n\">Form</span><span class=\"p\">):</span>\n<span class=\"gp\">... </span>    <span class=\"n\">name</span> <span class=\"o\">=</span> <span class=\"n\">forms</span><span class=\"o\">.</span><span class=\"n\">CharField</span><span class=\"p\">(</span><span class=\"n\">label</span><span class=\"o\">=</span><span class=\"s1\">&#39;Your name&#39;</span><span class=\"p\">)</span>\n<span class=\"gp\">... </span>    <span class=\"n\">url</span> <span class=\"o\">=</span> <span class=\"n\">forms</span><span class=\"o\">.</span><span class=\"n\">URLField</span><span class=\"p\">(</span><span class=\"n\">label</span><span class=\"o\">=</span><span class=\"s1\">&#39;Your website&#39;</span><span class=\"p\">,</span> <span class=\"n\">required</span><span class=\"o\">=</span><span class=\"kc\">False</span><span class=\"p\">)</span>\n<span class=\"gp\">... </span>    <span class=\"n\">comment</span> <span class=\"o\">=</span> <span class=\"n\">forms</span><span class=\"o\">.</span><span class=\"n\">CharField</span><span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">f</span> <span class=\"o\">=</span> <span class=\"n\">CommentForm</span><span class=\"p\">(</span><span class=\"n\">auto_id</span><span class=\"o\">=</span><span class=\"kc\">False</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"nb\">print</span><span class=\"p\">(</span><span class=\"n\">f</span><span class=\"p\">)</span>\n<span class=\"go\">&lt;tr&gt;&lt;th&gt;Your name:&lt;/th&gt;&lt;td&gt;&lt;input type=&quot;text&quot; name=&quot;name&quot; required&gt;&lt;/td&gt;&lt;/tr&gt;</span>\n<span class=\"go\">&lt;tr&gt;&lt;th&gt;Your website:&lt;/th&gt;&lt;td&gt;&lt;input type=&quot;url&quot; name=&quot;url&quot;&gt;&lt;/td&gt;&lt;/tr&gt;</span>\n<span class=\"go\">&lt;tr&gt;&lt;th&gt;Comment:&lt;/th&gt;&lt;td&gt;&lt;input type=&quot;text&quot; name=&quot;comment&quot; required&gt;&lt;/td&gt;&lt;/tr&gt;</span>\n</code></pre></div>\n</section>\n<section id=\"label-suffix\">\n<h3><code class=\"docutils literal notranslate\"><span class=\"pre\">label_suffix</span></code><a class=\"heading-anchor\" href=\"#label-suffix\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.forms.Field.label_suffix\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">Field.</span></span><span class=\"sig-name descname\"><span class=\"pre\">label_suffix</span></span><a class=\"heading-anchor\" href=\"#django.forms.Field.label_suffix\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Le paramètre <code class=\"docutils literal notranslate\"><span class=\"pre\">label_suffix</span></code> permet de surcharger l’attribut <a class=\"reference internal\" href=\"/fr/2.1/ref/forms/api/#django.forms.Form.label_suffix\" title=\"django.forms.Form.label_suffix\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">label_suffix</span></code></a> d’un formulaire pour un champ particulier :</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">ContactForm</span><span class=\"p\">(</span><span class=\"n\">forms</span><span class=\"o\">.</span><span class=\"n\">Form</span><span class=\"p\">):</span>\n<span class=\"gp\">... </span>    <span class=\"n\">age</span> <span class=\"o\">=</span> <span class=\"n\">forms</span><span class=\"o\">.</span><span class=\"n\">IntegerField</span><span class=\"p\">()</span>\n<span class=\"gp\">... </span>    <span class=\"n\">nationality</span> <span class=\"o\">=</span> <span class=\"n\">forms</span><span class=\"o\">.</span><span class=\"n\">CharField</span><span class=\"p\">()</span>\n<span class=\"gp\">... </span>    <span class=\"n\">captcha_answer</span> <span class=\"o\">=</span> <span class=\"n\">forms</span><span class=\"o\">.</span><span class=\"n\">IntegerField</span><span class=\"p\">(</span><span class=\"n\">label</span><span class=\"o\">=</span><span class=\"s1\">&#39;2 + 2&#39;</span><span class=\"p\">,</span> <span class=\"n\">label_suffix</span><span class=\"o\">=</span><span class=\"s1\">&#39; =&#39;</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">f</span> <span class=\"o\">=</span> <span class=\"n\">ContactForm</span><span class=\"p\">(</span><span class=\"n\">label_suffix</span><span class=\"o\">=</span><span class=\"s1\">&#39;?&#39;</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"nb\">print</span><span class=\"p\">(</span><span class=\"n\">f</span><span class=\"o\">.</span><span class=\"n\">as_p</span><span class=\"p\">())</span>\n<span class=\"go\">&lt;p&gt;&lt;label for=&quot;id_age&quot;&gt;Age?&lt;/label&gt; &lt;input id=&quot;id_age&quot; name=&quot;age&quot; type=&quot;number&quot; required&gt;&lt;/p&gt;</span>\n<span class=\"go\">&lt;p&gt;&lt;label for=&quot;id_nationality&quot;&gt;Nationality?&lt;/label&gt; &lt;input id=&quot;id_nationality&quot; name=&quot;nationality&quot; type=&quot;text&quot; required&gt;&lt;/p&gt;</span>\n<span class=\"go\">&lt;p&gt;&lt;label for=&quot;id_captcha_answer&quot;&gt;2 + 2 =&lt;/label&gt; &lt;input id=&quot;id_captcha_answer&quot; name=&quot;captcha_answer&quot; type=&quot;number&quot; required&gt;&lt;/p&gt;</span>\n</code></pre></div>\n</section>\n<section id=\"initial\">\n<h3><code class=\"docutils literal notranslate\"><span class=\"pre\">initial</span></code><a class=\"heading-anchor\" href=\"#initial\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.forms.Field.initial\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">Field.</span></span><span class=\"sig-name descname\"><span class=\"pre\">initial</span></span><a class=\"heading-anchor\" href=\"#django.forms.Field.initial\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Le paramètre <code class=\"docutils literal notranslate\"><span class=\"pre\">initial</span></code> permet d’indiquer la valeur initiale à utiliser lors de l’affichage HTML du champ dans un formulaire <code class=\"docutils literal notranslate\"><span class=\"pre\">Form</span></code> non lié.</p>\n<p>Pour indiquer des données initiales dynamiques, voir le paramètre <a class=\"reference internal\" href=\"/fr/2.1/ref/forms/api/#django.forms.Form.initial\" title=\"django.forms.Form.initial\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">Form.initial</span></code></a>.</p>\n<p>Le cas d’utilisation typique est lorsque l’on veut afficher un formulaire vierge dans lequel un champ contient initialement une valeur. Par exemple :</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">forms</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">CommentForm</span><span class=\"p\">(</span><span class=\"n\">forms</span><span class=\"o\">.</span><span class=\"n\">Form</span><span class=\"p\">):</span>\n<span class=\"gp\">... </span>    <span class=\"n\">name</span> <span class=\"o\">=</span> <span class=\"n\">forms</span><span class=\"o\">.</span><span class=\"n\">CharField</span><span class=\"p\">(</span><span class=\"n\">initial</span><span class=\"o\">=</span><span class=\"s1\">&#39;Your name&#39;</span><span class=\"p\">)</span>\n<span class=\"gp\">... </span>    <span class=\"n\">url</span> <span class=\"o\">=</span> <span class=\"n\">forms</span><span class=\"o\">.</span><span class=\"n\">URLField</span><span class=\"p\">(</span><span class=\"n\">initial</span><span class=\"o\">=</span><span class=\"s1\">&#39;http://&#39;</span><span class=\"p\">)</span>\n<span class=\"gp\">... </span>    <span class=\"n\">comment</span> <span class=\"o\">=</span> <span class=\"n\">forms</span><span class=\"o\">.</span><span class=\"n\">CharField</span><span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">f</span> <span class=\"o\">=</span> <span class=\"n\">CommentForm</span><span class=\"p\">(</span><span class=\"n\">auto_id</span><span class=\"o\">=</span><span class=\"kc\">False</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"nb\">print</span><span class=\"p\">(</span><span class=\"n\">f</span><span class=\"p\">)</span>\n<span class=\"go\">&lt;tr&gt;&lt;th&gt;Name:&lt;/th&gt;&lt;td&gt;&lt;input type=&quot;text&quot; name=&quot;name&quot; value=&quot;Your name&quot; required&gt;&lt;/td&gt;&lt;/tr&gt;</span>\n<span class=\"go\">&lt;tr&gt;&lt;th&gt;Url:&lt;/th&gt;&lt;td&gt;&lt;input type=&quot;url&quot; name=&quot;url&quot; value=&quot;http://&quot; required&gt;&lt;/td&gt;&lt;/tr&gt;</span>\n<span class=\"go\">&lt;tr&gt;&lt;th&gt;Comment:&lt;/th&gt;&lt;td&gt;&lt;input type=&quot;text&quot; name=&quot;comment&quot; required&gt;&lt;/td&gt;&lt;/tr&gt;</span>\n</code></pre></div>\n<p>Vous vous demandez peut-être pourquoi on ne passe pas simplement un dictionnaire de valeurs initiales dans le paramètre <code class=\"docutils literal notranslate\"><span class=\"pre\">data</span></code> au moment d’afficher le formulaire ? Le problème de cette solution est que cela provoque la validation des données et que le résultat HTML contiendra alors d’éventuelles erreurs de validation :</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">CommentForm</span><span class=\"p\">(</span><span class=\"n\">forms</span><span class=\"o\">.</span><span class=\"n\">Form</span><span class=\"p\">):</span>\n<span class=\"gp\">... </span>    <span class=\"n\">name</span> <span class=\"o\">=</span> <span class=\"n\">forms</span><span class=\"o\">.</span><span class=\"n\">CharField</span><span class=\"p\">()</span>\n<span class=\"gp\">... </span>    <span class=\"n\">url</span> <span class=\"o\">=</span> <span class=\"n\">forms</span><span class=\"o\">.</span><span class=\"n\">URLField</span><span class=\"p\">()</span>\n<span class=\"gp\">... </span>    <span class=\"n\">comment</span> <span class=\"o\">=</span> <span class=\"n\">forms</span><span class=\"o\">.</span><span class=\"n\">CharField</span><span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">default_data</span> <span class=\"o\">=</span> <span class=\"p\">{</span><span class=\"s1\">&#39;name&#39;</span><span class=\"p\">:</span> <span class=\"s1\">&#39;Your name&#39;</span><span class=\"p\">,</span> <span class=\"s1\">&#39;url&#39;</span><span class=\"p\">:</span> <span class=\"s1\">&#39;http://&#39;</span><span class=\"p\">}</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">f</span> <span class=\"o\">=</span> <span class=\"n\">CommentForm</span><span class=\"p\">(</span><span class=\"n\">default_data</span><span class=\"p\">,</span> <span class=\"n\">auto_id</span><span class=\"o\">=</span><span class=\"kc\">False</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"nb\">print</span><span class=\"p\">(</span><span class=\"n\">f</span><span class=\"p\">)</span>\n<span class=\"go\">&lt;tr&gt;&lt;th&gt;Name:&lt;/th&gt;&lt;td&gt;&lt;input type=&quot;text&quot; name=&quot;name&quot; value=&quot;Your name&quot; required&gt;&lt;/td&gt;&lt;/tr&gt;</span>\n<span class=\"go\">&lt;tr&gt;&lt;th&gt;Url:&lt;/th&gt;&lt;td&gt;&lt;ul class=&quot;errorlist&quot;&gt;&lt;li&gt;Enter a valid URL.&lt;/li&gt;&lt;/ul&gt;&lt;input type=&quot;url&quot; name=&quot;url&quot; value=&quot;http://&quot; required&gt;&lt;/td&gt;&lt;/tr&gt;</span>\n<span class=\"go\">&lt;tr&gt;&lt;th&gt;Comment:&lt;/th&gt;&lt;td&gt;&lt;ul class=&quot;errorlist&quot;&gt;&lt;li&gt;This field is required.&lt;/li&gt;&lt;/ul&gt;&lt;input type=&quot;text&quot; name=&quot;comment&quot; required&gt;&lt;/td&gt;&lt;/tr&gt;</span>\n</code></pre></div>\n<p>C’est pourquoi les valeurs initiales ne sont affichées que pour les formulaires non liés. Pour les formulaires liés, le résultat HTML utilise les données liées.</p>\n<p>Notez également que les valeurs initiales ne sont <em>pas</em> utilisées comme données de repli dans la validation lorsqu’une valeur de champ est manquante. Les valeurs initiales sont <em>uniquement</em> destinées à l’affichage initial d’un formulaire :</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">CommentForm</span><span class=\"p\">(</span><span class=\"n\">forms</span><span class=\"o\">.</span><span class=\"n\">Form</span><span class=\"p\">):</span>\n<span class=\"gp\">... </span>    <span class=\"n\">name</span> <span class=\"o\">=</span> <span class=\"n\">forms</span><span class=\"o\">.</span><span class=\"n\">CharField</span><span class=\"p\">(</span><span class=\"n\">initial</span><span class=\"o\">=</span><span class=\"s1\">&#39;Your name&#39;</span><span class=\"p\">)</span>\n<span class=\"gp\">... </span>    <span class=\"n\">url</span> <span class=\"o\">=</span> <span class=\"n\">forms</span><span class=\"o\">.</span><span class=\"n\">URLField</span><span class=\"p\">(</span><span class=\"n\">initial</span><span class=\"o\">=</span><span class=\"s1\">&#39;http://&#39;</span><span class=\"p\">)</span>\n<span class=\"gp\">... </span>    <span class=\"n\">comment</span> <span class=\"o\">=</span> <span class=\"n\">forms</span><span class=\"o\">.</span><span class=\"n\">CharField</span><span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">data</span> <span class=\"o\">=</span> <span class=\"p\">{</span><span class=\"s1\">&#39;name&#39;</span><span class=\"p\">:</span> <span class=\"s1\">&#39;&#39;</span><span class=\"p\">,</span> <span class=\"s1\">&#39;url&#39;</span><span class=\"p\">:</span> <span class=\"s1\">&#39;&#39;</span><span class=\"p\">,</span> <span class=\"s1\">&#39;comment&#39;</span><span class=\"p\">:</span> <span class=\"s1\">&#39;Foo&#39;</span><span class=\"p\">}</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">f</span> <span class=\"o\">=</span> <span class=\"n\">CommentForm</span><span class=\"p\">(</span><span class=\"n\">data</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">f</span><span class=\"o\">.</span><span class=\"n\">is_valid</span><span class=\"p\">()</span>\n<span class=\"go\">False</span>\n<span class=\"go\"># The form does *not* fall back to using the initial values.</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">f</span><span class=\"o\">.</span><span class=\"n\">errors</span>\n<span class=\"go\">{&#39;url&#39;: [&#39;This field is required.&#39;], &#39;name&#39;: [&#39;This field is required.&#39;]}</span>\n</code></pre></div>\n<p>Au lieu d’une constante, il est aussi possible de transmettre un objet exécutable :</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">import</span><span class=\"w\"> </span><span class=\"nn\">datetime</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">DateForm</span><span class=\"p\">(</span><span class=\"n\">forms</span><span class=\"o\">.</span><span class=\"n\">Form</span><span class=\"p\">):</span>\n<span class=\"gp\">... </span>    <span class=\"n\">day</span> <span class=\"o\">=</span> <span class=\"n\">forms</span><span class=\"o\">.</span><span class=\"n\">DateField</span><span class=\"p\">(</span><span class=\"n\">initial</span><span class=\"o\">=</span><span class=\"n\">datetime</span><span class=\"o\">.</span><span class=\"n\">date</span><span class=\"o\">.</span><span class=\"n\">today</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"nb\">print</span><span class=\"p\">(</span><span class=\"n\">DateForm</span><span class=\"p\">())</span>\n<span class=\"go\">&lt;tr&gt;&lt;th&gt;Day:&lt;/th&gt;&lt;td&gt;&lt;input type=&quot;text&quot; name=&quot;day&quot; value=&quot;12/23/2008&quot; required&gt;&lt;td&gt;&lt;/tr&gt;</span>\n</code></pre></div>\n<p>L’objet exécutable ne sera évalué qu’au moment où le formulaire non lié est affiché, et non pas au moment de sa définition.</p>\n</section>\n<section id=\"widget\">\n<h3><code class=\"docutils literal notranslate\"><span class=\"pre\">widget</span></code><a class=\"heading-anchor\" href=\"#widget\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.forms.Field.widget\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">Field.</span></span><span class=\"sig-name descname\"><span class=\"pre\">widget</span></span><a class=\"heading-anchor\" href=\"#django.forms.Field.widget\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Le paramètre <code class=\"docutils literal notranslate\"><span class=\"pre\">widget</span></code> permet d’indiquer une classe <code class=\"docutils literal notranslate\"><span class=\"pre\">Widget</span></code> à utiliser lors du rendu HTML de ce champ. Voir <a class=\"reference internal\" href=\"/fr/2.1/ref/forms/widgets/\"><span class=\"doc\">Composants de formulaires (« widgets »)</span></a> pour plus d’informations.</p>\n</section>\n<section id=\"help-text\">\n<h3><code class=\"docutils literal notranslate\"><span class=\"pre\">help_text</span></code><a class=\"heading-anchor\" href=\"#help-text\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.forms.Field.help_text\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">Field.</span></span><span class=\"sig-name descname\"><span class=\"pre\">help_text</span></span><a class=\"heading-anchor\" href=\"#django.forms.Field.help_text\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Le paramètre <code class=\"docutils literal notranslate\"><span class=\"pre\">help_text</span></code> vous permet de définir du texte descriptif pour ce champ. S’il est défini, il sera affiché près du champ lorsque celui-ci sera affiché en HTML par l’une des méthodes de raccourci de <code class=\"docutils literal notranslate\"><span class=\"pre\">Form</span></code> (par ex. <code class=\"docutils literal notranslate\"><span class=\"pre\">as_ul()</span></code>).</p>\n<p>Tout comme l’attribut <a class=\"reference internal\" href=\"/fr/2.1/ref/models/fields/#django.db.models.Field.help_text\" title=\"django.db.models.Field.help_text\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">help_text</span></code></a> d’un champ de modèle, cette valeur n’est pas sujette à l’échappement HTML dans les formulaires générés automatiquement.</p>\n<p>Voici un exemple complet de formulaire implémentant  <code class=\"docutils literal notranslate\"><span class=\"pre\">help_text</span></code> pour deux de ses champs. Nous avons indiqué <code class=\"docutils literal notranslate\"><span class=\"pre\">auto_id=False</span></code> pour simplifier l’affichage :</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">forms</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">HelpTextContactForm</span><span class=\"p\">(</span><span class=\"n\">forms</span><span class=\"o\">.</span><span class=\"n\">Form</span><span class=\"p\">):</span>\n<span class=\"gp\">... </span>    <span class=\"n\">subject</span> <span class=\"o\">=</span> <span class=\"n\">forms</span><span class=\"o\">.</span><span class=\"n\">CharField</span><span class=\"p\">(</span><span class=\"n\">max_length</span><span class=\"o\">=</span><span class=\"mi\">100</span><span class=\"p\">,</span> <span class=\"n\">help_text</span><span class=\"o\">=</span><span class=\"s1\">&#39;100 characters max.&#39;</span><span class=\"p\">)</span>\n<span class=\"gp\">... </span>    <span class=\"n\">message</span> <span class=\"o\">=</span> <span class=\"n\">forms</span><span class=\"o\">.</span><span class=\"n\">CharField</span><span class=\"p\">()</span>\n<span class=\"gp\">... </span>    <span class=\"n\">sender</span> <span class=\"o\">=</span> <span class=\"n\">forms</span><span class=\"o\">.</span><span class=\"n\">EmailField</span><span class=\"p\">(</span><span class=\"n\">help_text</span><span class=\"o\">=</span><span class=\"s1\">&#39;A valid email address, please.&#39;</span><span class=\"p\">)</span>\n<span class=\"gp\">... </span>    <span class=\"n\">cc_myself</span> <span class=\"o\">=</span> <span class=\"n\">forms</span><span class=\"o\">.</span><span class=\"n\">BooleanField</span><span class=\"p\">(</span><span class=\"n\">required</span><span class=\"o\">=</span><span class=\"kc\">False</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">f</span> <span class=\"o\">=</span> <span class=\"n\">HelpTextContactForm</span><span class=\"p\">(</span><span class=\"n\">auto_id</span><span class=\"o\">=</span><span class=\"kc\">False</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"nb\">print</span><span class=\"p\">(</span><span class=\"n\">f</span><span class=\"o\">.</span><span class=\"n\">as_table</span><span class=\"p\">())</span>\n<span class=\"go\">&lt;tr&gt;&lt;th&gt;Subject:&lt;/th&gt;&lt;td&gt;&lt;input type=&quot;text&quot; name=&quot;subject&quot; maxlength=&quot;100&quot; required&gt;&lt;br&gt;&lt;span class=&quot;helptext&quot;&gt;100 characters max.&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;</span>\n<span class=\"go\">&lt;tr&gt;&lt;th&gt;Message:&lt;/th&gt;&lt;td&gt;&lt;input type=&quot;text&quot; name=&quot;message&quot; required&gt;&lt;/td&gt;&lt;/tr&gt;</span>\n<span class=\"go\">&lt;tr&gt;&lt;th&gt;Sender:&lt;/th&gt;&lt;td&gt;&lt;input type=&quot;email&quot; name=&quot;sender&quot; required&gt;&lt;br&gt;A valid email address, please.&lt;/td&gt;&lt;/tr&gt;</span>\n<span class=\"go\">&lt;tr&gt;&lt;th&gt;Cc myself:&lt;/th&gt;&lt;td&gt;&lt;input type=&quot;checkbox&quot; name=&quot;cc_myself&quot;&gt;&lt;/td&gt;&lt;/tr&gt;</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"nb\">print</span><span class=\"p\">(</span><span class=\"n\">f</span><span class=\"o\">.</span><span class=\"n\">as_ul</span><span class=\"p\">()))</span>\n<span class=\"go\">&lt;li&gt;Subject: &lt;input type=&quot;text&quot; name=&quot;subject&quot; maxlength=&quot;100&quot; required&gt; &lt;span class=&quot;helptext&quot;&gt;100 characters max.&lt;/span&gt;&lt;/li&gt;</span>\n<span class=\"go\">&lt;li&gt;Message: &lt;input type=&quot;text&quot; name=&quot;message&quot; required&gt;&lt;/li&gt;</span>\n<span class=\"go\">&lt;li&gt;Sender: &lt;input type=&quot;email&quot; name=&quot;sender&quot; required&gt; A valid email address, please.&lt;/li&gt;</span>\n<span class=\"go\">&lt;li&gt;Cc myself: &lt;input type=&quot;checkbox&quot; name=&quot;cc_myself&quot;&gt;&lt;/li&gt;</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"nb\">print</span><span class=\"p\">(</span><span class=\"n\">f</span><span class=\"o\">.</span><span class=\"n\">as_p</span><span class=\"p\">())</span>\n<span class=\"go\">&lt;p&gt;Subject: &lt;input type=&quot;text&quot; name=&quot;subject&quot; maxlength=&quot;100&quot; required&gt; &lt;span class=&quot;helptext&quot;&gt;100 characters max.&lt;/span&gt;&lt;/p&gt;</span>\n<span class=\"go\">&lt;p&gt;Message: &lt;input type=&quot;text&quot; name=&quot;message&quot; required&gt;&lt;/p&gt;</span>\n<span class=\"go\">&lt;p&gt;Sender: &lt;input type=&quot;email&quot; name=&quot;sender&quot; required&gt; A valid email address, please.&lt;/p&gt;</span>\n<span class=\"go\">&lt;p&gt;Cc myself: &lt;input type=&quot;checkbox&quot; name=&quot;cc_myself&quot;&gt;&lt;/p&gt;</span>\n</code></pre></div>\n</section>\n<section id=\"error-messages\">\n<h3><code class=\"docutils literal notranslate\"><span class=\"pre\">error_messages</span></code><a class=\"heading-anchor\" href=\"#error-messages\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.forms.Field.error_messages\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">Field.</span></span><span class=\"sig-name descname\"><span class=\"pre\">error_messages</span></span><a class=\"heading-anchor\" href=\"#django.forms.Field.error_messages\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Le paramètre <code class=\"docutils literal notranslate\"><span class=\"pre\">error_messages</span></code> permet de redéfinir les messages par défaut que le champ renvoie. Passez un dictionnaire dont les clés correspondent aux messages d’erreur que vous voulez redéfinir. Par exemple, voici le message d’erreur par défaut :</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">forms</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">generic</span> <span class=\"o\">=</span> <span class=\"n\">forms</span><span class=\"o\">.</span><span class=\"n\">CharField</span><span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">generic</span><span class=\"o\">.</span><span class=\"n\">clean</span><span class=\"p\">(</span><span class=\"s1\">&#39;&#39;</span><span class=\"p\">)</span>\n<span class=\"gt\">Traceback (most recent call last):</span>\n<span class=\"w\">  </span><span class=\"c\">...</span>\n<span class=\"gr\">ValidationError</span>: <span class=\"n\">[&#39;This field is required.&#39;]</span>\n</code></pre></div>\n<p>Et voici un message d’erreur personnalisé :</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">name</span> <span class=\"o\">=</span> <span class=\"n\">forms</span><span class=\"o\">.</span><span class=\"n\">CharField</span><span class=\"p\">(</span><span class=\"n\">error_messages</span><span class=\"o\">=</span><span class=\"p\">{</span><span class=\"s1\">&#39;required&#39;</span><span class=\"p\">:</span> <span class=\"s1\">&#39;Please enter your name&#39;</span><span class=\"p\">})</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">name</span><span class=\"o\">.</span><span class=\"n\">clean</span><span class=\"p\">(</span><span class=\"s1\">&#39;&#39;</span><span class=\"p\">)</span>\n<span class=\"gt\">Traceback (most recent call last):</span>\n<span class=\"w\">  </span><span class=\"c\">...</span>\n<span class=\"gr\">ValidationError</span>: <span class=\"n\">[&#39;Please enter your name&#39;]</span>\n</code></pre></div>\n<p>Dans la section <a class=\"reference internal\" href=\"#built-in-field-classes\">Classes de champs Field intégrées</a> ci-dessous, chaque champ <code class=\"docutils literal notranslate\"><span class=\"pre\">Field</span></code> définit les clés de messages d’erreur qu’il utilise.</p>\n</section>\n<section id=\"validators\">\n<h3><code class=\"docutils literal notranslate\"><span class=\"pre\">validators</span></code><a class=\"heading-anchor\" href=\"#validators\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.forms.Field.validators\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">Field.</span></span><span class=\"sig-name descname\"><span class=\"pre\">validators</span></span><a class=\"heading-anchor\" href=\"#django.forms.Field.validators\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Le paramètre <code class=\"docutils literal notranslate\"><span class=\"pre\">validators</span></code> permet de définir une liste de fonctions de validation pour le champ.</p>\n<p>Consultez la <a class=\"reference internal\" href=\"/fr/2.1/ref/validators/\"><span class=\"doc\">documentation des validateurs</span></a> pour plus d’informations.</p>\n</section>\n<section id=\"localize\">\n<h3><code class=\"docutils literal notranslate\"><span class=\"pre\">localize</span></code><a class=\"heading-anchor\" href=\"#localize\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.forms.Field.localize\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">Field.</span></span><span class=\"sig-name descname\"><span class=\"pre\">localize</span></span><a class=\"heading-anchor\" href=\"#django.forms.Field.localize\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Le paramètre <code class=\"docutils literal notranslate\"><span class=\"pre\">localize</span></code> active la régionalisation des données de formulaires, aussi bien au niveau de la saisie que de l’affichage produit.</p>\n<p>Consultez la documentation sur la <a class=\"reference internal\" href=\"/fr/2.1/topics/i18n/formatting/\"><span class=\"doc\">régionalisation de la mise en forme</span></a> pour plus d’informations.</p>\n</section>\n<section id=\"disabled\">\n<h3><code class=\"docutils literal notranslate\"><span class=\"pre\">disabled</span></code><a class=\"heading-anchor\" href=\"#disabled\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.forms.Field.disabled\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">Field.</span></span><span class=\"sig-name descname\"><span class=\"pre\">disabled</span></span><a class=\"heading-anchor\" href=\"#django.forms.Field.disabled\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Le paramètre booléen <code class=\"docutils literal notranslate\"><span class=\"pre\">disabled</span></code>, lorsqu’il est défini à <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code>, désactive un champ de formulaire en utilisant l’attribut HTML <code class=\"docutils literal notranslate\"><span class=\"pre\">disabled</span></code> afin qu’il ne soit pas modifiable par les utilisateurs. Même si quelqu’un forçait la modification de la valeur du champ soumis au serveur, elle serait ignorée en faveur de la valeur fournie initialement au formulaire.</p>\n</section>\n</section>\n<section id=\"checking-if-the-field-data-has-changed\">\n<h2>Contrôle des données de champ modifiées<a class=\"heading-anchor\" href=\"#checking-if-the-field-data-has-changed\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h2>\n<section id=\"has-changed\">\n<h3><code class=\"docutils literal notranslate\"><span class=\"pre\">has_changed()</span></code><a class=\"heading-anchor\" href=\"#has-changed\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.forms.Field.has_changed\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">Field.</span></span><span class=\"sig-name descname\"><span class=\"pre\">has_changed</span></span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.forms.Field.has_changed\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>La méthode <code class=\"docutils literal notranslate\"><span class=\"pre\">has_changed()</span></code> est utilisée pour déterminer si la valeur du champ a été modifiée par rapport à sa valeur initiale. Renvoie <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code> ou <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code>.</p>\n<p>Consultez la documentation de <a class=\"reference internal\" href=\"/fr/2.1/ref/forms/api/#django.forms.Form.has_changed\" title=\"django.forms.Form.has_changed\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">Form.has_changed()</span></code></a> pour plus de détails.</p>\n</section>\n</section>\n<section id=\"built-in-field-classes\">\n<span id=\"built-in-fields\"></span><h2>Classes de champs <code class=\"docutils literal notranslate\"><span class=\"pre\">Field</span></code> intégrées<a class=\"heading-anchor\" href=\"#built-in-field-classes\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Bien évidemment, la bibliothèque des formulaires est livrée avec une série de classes <code class=\"docutils literal notranslate\"><span class=\"pre\">Field</span></code> représentant les besoins de validation les plus courants. Cette section décrit chaque champ intégré dans Django.</p>\n<p>Pour chaque champ, nous indiquons le composant utilisé par défaut quand <code class=\"docutils literal notranslate\"><span class=\"pre\">widget</span></code> n’est pas précisé. Nous indiquons également la valeur renvoyée lorsqu’une valeur vide est fournie (voir la section sur <code class=\"docutils literal notranslate\"><span class=\"pre\">required</span></code> ci-dessus pour comprendre ce que cela signifie).</p>\n<section id=\"booleanfield\">\n<h3><code class=\"docutils literal notranslate\"><span class=\"pre\">BooleanField</span></code><a class=\"heading-anchor\" href=\"#booleanfield\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.forms.BooleanField\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">BooleanField</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.forms.BooleanField\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><ul class=\"simple\">\n<li><p>Composant par défaut : <a class=\"reference internal\" href=\"/fr/2.1/ref/forms/widgets/#django.forms.CheckboxInput\" title=\"django.forms.CheckboxInput\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">CheckboxInput</span></code></a></p></li>\n<li><p>Valeur vide : <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code></p></li>\n<li><p>Est normalisé en : une valeur Python <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code> ou <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code>.</p></li>\n<li><p>Valide que la valeur est <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code> (signifiant par exemple que la case à cocher est cochée) si <code class=\"docutils literal notranslate\"><span class=\"pre\">required=True</span></code> pour ce champ.</p></li>\n<li><p>Clés de messages d’erreur : <code class=\"docutils literal notranslate\"><span class=\"pre\">required</span></code></p></li>\n</ul>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">Note</p>\n<p>Comme toutes les sous-classes de <code class=\"docutils literal notranslate\"><span class=\"pre\">Field</span></code> héritent <code class=\"docutils literal notranslate\"><span class=\"pre\">required=True</span></code> par défaut, la condition de validation est importante à cet endroit. Si vous souhaitez inclure une valeur booléenne dans un formulaire qui puisse valoir aussi bien <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code> que <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code> (par exemple une case cochée ou non), vous devez vous rappeler de passer <code class=\"docutils literal notranslate\"><span class=\"pre\">required=False</span></code> au moment de créer le champ <code class=\"docutils literal notranslate\"><span class=\"pre\">BooleanField</span></code>.</p>\n</aside>\n</dd></dl>\n\n</section>\n<section id=\"charfield\">\n<h3><code class=\"docutils literal notranslate\"><span class=\"pre\">CharField</span></code><a class=\"heading-anchor\" href=\"#charfield\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.forms.CharField\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">CharField</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.forms.CharField\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><ul class=\"simple\">\n<li><p>Composant par défaut : <a class=\"reference internal\" href=\"/fr/2.1/ref/forms/widgets/#django.forms.TextInput\" title=\"django.forms.TextInput\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">TextInput</span></code></a></p></li>\n<li><p>Valeur vide : ce qui a été indiqué dans <a class=\"reference internal\" href=\"#django.forms.CharField.empty_value\" title=\"django.forms.CharField.empty_value\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">empty_value</span></code></a>.</p></li>\n<li><p>Est normalisé en : une chaîne.</p></li>\n<li><p>Utilise <a class=\"reference internal\" href=\"/fr/2.1/ref/validators/#django.core.validators.MaxLengthValidator\" title=\"django.core.validators.MaxLengthValidator\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">MaxLengthValidator</span></code></a> et <a class=\"reference internal\" href=\"/fr/2.1/ref/validators/#django.core.validators.MinLengthValidator\" title=\"django.core.validators.MinLengthValidator\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">MinLengthValidator</span></code></a> si <code class=\"docutils literal notranslate\"><span class=\"pre\">max_length</span></code> et <code class=\"docutils literal notranslate\"><span class=\"pre\">min_length</span></code> sont fournis. Sinon, toutes les entrées sont valides.</p></li>\n<li><p>Clés de messages d’erreur : <code class=\"docutils literal notranslate\"><span class=\"pre\">required</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">max_length</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">min_length</span></code></p></li>\n</ul>\n<p>Possède trois paramètres facultatifs liés à la validation :</p>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.forms.CharField.max_length\">\n<span class=\"sig-name descname\"><span class=\"pre\">max_length</span></span><a class=\"heading-anchor\" href=\"#django.forms.CharField.max_length\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.forms.CharField.min_length\">\n<span class=\"sig-name descname\"><span class=\"pre\">min_length</span></span><a class=\"heading-anchor\" href=\"#django.forms.CharField.min_length\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Quand ils sont fournis, ces paramètres garantissent que la chaîne de caractères correspond au maximum ou au minimum à la longueur donnée.</p>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.forms.CharField.strip\">\n<span class=\"sig-name descname\"><span class=\"pre\">strip</span></span><a class=\"heading-anchor\" href=\"#django.forms.CharField.strip\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Si <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code> (valeur par défaut), la valeur sera épurée d’éventuelles espaces initiales ou finales.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.forms.CharField.empty_value\">\n<span class=\"sig-name descname\"><span class=\"pre\">empty_value</span></span><a class=\"heading-anchor\" href=\"#django.forms.CharField.empty_value\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>La valeur à utiliser pour représenter une valeur vide. Contient une chaîne vide par défaut.</p>\n</dd></dl>\n\n</dd></dl>\n\n</section>\n<section id=\"choicefield\">\n<h3><code class=\"docutils literal notranslate\"><span class=\"pre\">ChoiceField</span></code><a class=\"heading-anchor\" href=\"#choicefield\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.forms.ChoiceField\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">ChoiceField</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.forms.ChoiceField\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><ul class=\"simple\">\n<li><p>Composant par défaut : <a class=\"reference internal\" href=\"/fr/2.1/ref/forms/widgets/#django.forms.Select\" title=\"django.forms.Select\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">Select</span></code></a></p></li>\n<li><p>Valeur vide : <code class=\"docutils literal notranslate\"><span class=\"pre\">''</span></code> (une chaîne vide)</p></li>\n<li><p>Est normalisé en : une chaîne.</p></li>\n<li><p>Valide que la valeur donnée existe dans la liste à choix.</p></li>\n<li><p>Clés de messages d’erreur : <code class=\"docutils literal notranslate\"><span class=\"pre\">required</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">invalid_choice</span></code></p></li>\n</ul>\n<p>Le message d’erreur <code class=\"docutils literal notranslate\"><span class=\"pre\">invalid_choice</span></code> peut contenir <code class=\"docutils literal notranslate\"><span class=\"pre\">%(value)s</span></code>, qui sera remplacé par le choix sélectionné.</p>\n<p>Accepte un paramètre supplémentaire :</p>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.forms.ChoiceField.choices\">\n<span class=\"sig-name descname\"><span class=\"pre\">choices</span></span><a class=\"heading-anchor\" href=\"#django.forms.ChoiceField.choices\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Soit un object itérable (par ex. une liste ou un tuple) de tuples à 2 valeurs à utiliser comme liste de choix pour ce champ, soit un objet exécutable qui renvoie un tel objet itérable. Ce paramètre accepte les mêmes formats que le paramètre <code class=\"docutils literal notranslate\"><span class=\"pre\">choices</span></code> d’un champ de modèle. Consultez la <a class=\"reference internal\" href=\"/fr/2.1/ref/models/fields/#field-choices\"><span class=\"std std-ref\">documentation des champs de modèles sur les choix</span></a> pour plus de détails. Si le paramètre est un exécutable, il est évalué lors de chaque initialisation du formulaire contenant le champ. Par défaut, c’est une liste vide.</p>\n</dd></dl>\n\n</dd></dl>\n\n</section>\n<section id=\"typedchoicefield\">\n<h3><code class=\"docutils literal notranslate\"><span class=\"pre\">TypedChoiceField</span></code><a class=\"heading-anchor\" href=\"#typedchoicefield\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.forms.TypedChoiceField\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">TypedChoiceField</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.forms.TypedChoiceField\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Similaire à <a class=\"reference internal\" href=\"#django.forms.ChoiceField\" title=\"django.forms.ChoiceField\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">ChoiceField</span></code></a>, sauf que <a class=\"reference internal\" href=\"#django.forms.TypedChoiceField\" title=\"django.forms.TypedChoiceField\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">TypedChoiceField</span></code></a> accepte deux paramètres supplémentaires, <a class=\"reference internal\" href=\"#django.forms.TypedChoiceField.coerce\" title=\"django.forms.TypedChoiceField.coerce\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">coerce</span></code></a> et <a class=\"reference internal\" href=\"#django.forms.TypedChoiceField.empty_value\" title=\"django.forms.TypedChoiceField.empty_value\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">empty_value</span></code></a>.</p>\n<ul class=\"simple\">\n<li><p>Composant par défaut : <a class=\"reference internal\" href=\"/fr/2.1/ref/forms/widgets/#django.forms.Select\" title=\"django.forms.Select\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">Select</span></code></a></p></li>\n<li><p>Valeur vide : ce qui a été indiqué dans <a class=\"reference internal\" href=\"#django.forms.TypedChoiceField.empty_value\" title=\"django.forms.TypedChoiceField.empty_value\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">empty_value</span></code></a>.</p></li>\n<li><p>Est normalisé en : une valeur du type indiqué par le paramètre <a class=\"reference internal\" href=\"#django.forms.TypedChoiceField.coerce\" title=\"django.forms.TypedChoiceField.coerce\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">coerce</span></code></a>.</p></li>\n<li><p>Valide que la valeur donnée existe dans la liste à choix et qu’elle peut être transformée dans le bon type.</p></li>\n<li><p>Clés de messages d’erreur : <code class=\"docutils literal notranslate\"><span class=\"pre\">required</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">invalid_choice</span></code></p></li>\n</ul>\n<p>Accepte des paramètres supplémentaires :</p>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.forms.TypedChoiceField.coerce\">\n<span class=\"sig-name descname\"><span class=\"pre\">coerce</span></span><a class=\"heading-anchor\" href=\"#django.forms.TypedChoiceField.coerce\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Une fonction acceptant un paramètre et renvoyant une valeur transtypée. Comme exemple, on peut mentionner les fonctions Python <code class=\"docutils literal notranslate\"><span class=\"pre\">int</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">float</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">bool</span></code> et les autres types. Par défaut, il s’agit de la fonction identité. Notez que le forçage de type se produit après la validation de saisie, il est donc possible de forcer une valeur qui n’est pas présente dans <code class=\"docutils literal notranslate\"><span class=\"pre\">choices</span></code>.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.forms.TypedChoiceField.empty_value\">\n<span class=\"sig-name descname\"><span class=\"pre\">empty_value</span></span><a class=\"heading-anchor\" href=\"#django.forms.TypedChoiceField.empty_value\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>La valeur utilisée pour signifier « vide ». Par défaut, il s’agit de la chaîne vide ; <code class=\"docutils literal notranslate\"><span class=\"pre\">None</span></code> est une autre option assez fréquente ici. Remarquez que le type de cette valeur ne sera pas transformé par le contenu du paramètre <code class=\"docutils literal notranslate\"><span class=\"pre\">coerce</span></code>, il faut donc la choisir en conséquence.</p>\n</dd></dl>\n\n</dd></dl>\n\n</section>\n<section id=\"datefield\">\n<h3><code class=\"docutils literal notranslate\"><span class=\"pre\">DateField</span></code><a class=\"heading-anchor\" href=\"#datefield\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.forms.DateField\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">DateField</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.forms.DateField\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><ul class=\"simple\">\n<li><p>Composant par défaut : <a class=\"reference internal\" href=\"/fr/2.1/ref/forms/widgets/#django.forms.DateInput\" title=\"django.forms.DateInput\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">DateInput</span></code></a></p></li>\n<li><p>Valeur vide : <code class=\"docutils literal notranslate\"><span class=\"pre\">None</span></code></p></li>\n<li><p>Est normalisé en : un objet Python <code class=\"docutils literal notranslate\"><span class=\"pre\">datetime.date</span></code>.</p></li>\n<li><p>Valide que la valeur donnée est un objet <code class=\"docutils literal notranslate\"><span class=\"pre\">datetime.date</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">datetime.datetime</span></code> ou une chaîne mise en forme dans un format de date particulier.</p></li>\n<li><p>Clés de messages d’erreur : <code class=\"docutils literal notranslate\"><span class=\"pre\">required</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">invalid</span></code></p></li>\n</ul>\n<p>Accepte un paramètre facultatif :</p>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.forms.DateField.input_formats\">\n<span class=\"sig-name descname\"><span class=\"pre\">input_formats</span></span><a class=\"heading-anchor\" href=\"#django.forms.DateField.input_formats\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Une liste de chaînes de format utilisées pour essayer de convertir une chaîne en un objet <code class=\"docutils literal notranslate\"><span class=\"pre\">datetime.date</span></code> valide.</p>\n</dd></dl>\n\n<p>Si aucun paramètre <code class=\"docutils literal notranslate\"><span class=\"pre\">input_formats</span></code> n’est indiqué, les formats de saisie par défaut sont :</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"p\">[</span><span class=\"s1\">&#39;%Y-%m-</span><span class=\"si\">%d</span><span class=\"s1\">&#39;</span><span class=\"p\">,</span>      <span class=\"c1\"># &#39;2006-10-25&#39;</span>\n <span class=\"s1\">&#39;%m/</span><span class=\"si\">%d</span><span class=\"s1\">/%Y&#39;</span><span class=\"p\">,</span>      <span class=\"c1\"># &#39;10/25/2006&#39;</span>\n <span class=\"s1\">&#39;%m/</span><span class=\"si\">%d</span><span class=\"s1\">/%y&#39;</span><span class=\"p\">]</span>      <span class=\"c1\"># &#39;10/25/06&#39;</span>\n</code></pre></div>\n<p>De plus, si vos réglages indiquent <a class=\"reference internal\" href=\"/fr/2.1/ref/settings/#std-setting-USE_L10N\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">USE_L10N=False</span></code></a>, les éléments suivants sont aussi inclus dans les formats de saisie par défaut :</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"p\">[</span><span class=\"s1\">&#39;%b </span><span class=\"si\">%d</span><span class=\"s1\"> %Y&#39;</span><span class=\"p\">,</span>      <span class=\"c1\"># &#39;Oct 25 2006&#39;</span>\n <span class=\"s1\">&#39;%b </span><span class=\"si\">%d</span><span class=\"s1\">, %Y&#39;</span><span class=\"p\">,</span>     <span class=\"c1\"># &#39;Oct 25, 2006&#39;</span>\n <span class=\"s1\">&#39;</span><span class=\"si\">%d</span><span class=\"s1\"> %b %Y&#39;</span><span class=\"p\">,</span>      <span class=\"c1\"># &#39;25 Oct 2006&#39;</span>\n <span class=\"s1\">&#39;</span><span class=\"si\">%d</span><span class=\"s1\"> %b, %Y&#39;</span><span class=\"p\">,</span>     <span class=\"c1\"># &#39;25 Oct, 2006&#39;</span>\n <span class=\"s1\">&#39;%B </span><span class=\"si\">%d</span><span class=\"s1\"> %Y&#39;</span><span class=\"p\">,</span>      <span class=\"c1\"># &#39;October 25 2006&#39;</span>\n <span class=\"s1\">&#39;%B </span><span class=\"si\">%d</span><span class=\"s1\">, %Y&#39;</span><span class=\"p\">,</span>     <span class=\"c1\"># &#39;October 25, 2006&#39;</span>\n <span class=\"s1\">&#39;</span><span class=\"si\">%d</span><span class=\"s1\"> %B %Y&#39;</span><span class=\"p\">,</span>      <span class=\"c1\"># &#39;25 October 2006&#39;</span>\n <span class=\"s1\">&#39;</span><span class=\"si\">%d</span><span class=\"s1\"> %B, %Y&#39;</span><span class=\"p\">]</span>     <span class=\"c1\"># &#39;25 October, 2006&#39;</span>\n</code></pre></div>\n<p>Voir aussi <a class=\"reference internal\" href=\"/fr/2.1/topics/i18n/formatting/\"><span class=\"doc\">régionalisation de la mise en forme</span></a>.</p>\n</dd></dl>\n\n</section>\n<section id=\"datetimefield\">\n<h3><code class=\"docutils literal notranslate\"><span class=\"pre\">DateTimeField</span></code><a class=\"heading-anchor\" href=\"#datetimefield\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.forms.DateTimeField\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">DateTimeField</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.forms.DateTimeField\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><ul class=\"simple\">\n<li><p>Composant par défaut : <a class=\"reference internal\" href=\"/fr/2.1/ref/forms/widgets/#django.forms.DateTimeInput\" title=\"django.forms.DateTimeInput\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">DateTimeInput</span></code></a></p></li>\n<li><p>Valeur vide : <code class=\"docutils literal notranslate\"><span class=\"pre\">None</span></code></p></li>\n<li><p>Est normalisé en : un objet Python <code class=\"docutils literal notranslate\"><span class=\"pre\">datetime.datetime</span></code>.</p></li>\n<li><p>Valide que la valeur donnée est un objet <code class=\"docutils literal notranslate\"><span class=\"pre\">datetime.datetime</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">datetime.date</span></code> ou une chaîne mise en forme dans un format de date/heure particulier.</p></li>\n<li><p>Clés de messages d’erreur : <code class=\"docutils literal notranslate\"><span class=\"pre\">required</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">invalid</span></code></p></li>\n</ul>\n<p>Accepte un paramètre facultatif :</p>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.forms.DateTimeField.input_formats\">\n<span class=\"sig-name descname\"><span class=\"pre\">input_formats</span></span><a class=\"heading-anchor\" href=\"#django.forms.DateTimeField.input_formats\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Une liste de chaînes de format utilisées pour essayer de convertir une chaîne en un objet <code class=\"docutils literal notranslate\"><span class=\"pre\">datetime.datetime</span></code> valide.</p>\n</dd></dl>\n\n<p>Si aucun paramètre <code class=\"docutils literal notranslate\"><span class=\"pre\">input_formats</span></code> n’est indiqué, les formats de saisie par défaut sont :</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"p\">[</span><span class=\"s1\">&#39;%Y-%m-</span><span class=\"si\">%d</span><span class=\"s1\"> %H:%M:%S&#39;</span><span class=\"p\">,</span>    <span class=\"c1\"># &#39;2006-10-25 14:30:59&#39;</span>\n <span class=\"s1\">&#39;%Y-%m-</span><span class=\"si\">%d</span><span class=\"s1\"> %H:%M&#39;</span><span class=\"p\">,</span>       <span class=\"c1\"># &#39;2006-10-25 14:30&#39;</span>\n <span class=\"s1\">&#39;%Y-%m-</span><span class=\"si\">%d</span><span class=\"s1\">&#39;</span><span class=\"p\">,</span>             <span class=\"c1\"># &#39;2006-10-25&#39;</span>\n <span class=\"s1\">&#39;%m/</span><span class=\"si\">%d</span><span class=\"s1\">/%Y %H:%M:%S&#39;</span><span class=\"p\">,</span>    <span class=\"c1\"># &#39;10/25/2006 14:30:59&#39;</span>\n <span class=\"s1\">&#39;%m/</span><span class=\"si\">%d</span><span class=\"s1\">/%Y %H:%M&#39;</span><span class=\"p\">,</span>       <span class=\"c1\"># &#39;10/25/2006 14:30&#39;</span>\n <span class=\"s1\">&#39;%m/</span><span class=\"si\">%d</span><span class=\"s1\">/%Y&#39;</span><span class=\"p\">,</span>             <span class=\"c1\"># &#39;10/25/2006&#39;</span>\n <span class=\"s1\">&#39;%m/</span><span class=\"si\">%d</span><span class=\"s1\">/%y %H:%M:%S&#39;</span><span class=\"p\">,</span>    <span class=\"c1\"># &#39;10/25/06 14:30:59&#39;</span>\n <span class=\"s1\">&#39;%m/</span><span class=\"si\">%d</span><span class=\"s1\">/%y %H:%M&#39;</span><span class=\"p\">,</span>       <span class=\"c1\"># &#39;10/25/06 14:30&#39;</span>\n <span class=\"s1\">&#39;%m/</span><span class=\"si\">%d</span><span class=\"s1\">/%y&#39;</span><span class=\"p\">]</span>             <span class=\"c1\"># &#39;10/25/06&#39;</span>\n</code></pre></div>\n<p>Voir aussi <a class=\"reference internal\" href=\"/fr/2.1/topics/i18n/formatting/\"><span class=\"doc\">régionalisation de la mise en forme</span></a>.</p>\n</dd></dl>\n\n</section>\n<section id=\"decimalfield\">\n<h3><code class=\"docutils literal notranslate\"><span class=\"pre\">DecimalField</span></code><a class=\"heading-anchor\" href=\"#decimalfield\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.forms.DecimalField\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">DecimalField</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.forms.DecimalField\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><ul class=\"simple\">\n<li><p>Composant par défaut : <a class=\"reference internal\" href=\"/fr/2.1/ref/forms/widgets/#django.forms.NumberInput\" title=\"django.forms.NumberInput\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">NumberInput</span></code></a> lorsque <a class=\"reference internal\" href=\"#django.forms.Field.localize\" title=\"django.forms.Field.localize\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">Field.localize</span></code></a> vaut <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code>, sinon <a class=\"reference internal\" href=\"/fr/2.1/ref/forms/widgets/#django.forms.TextInput\" title=\"django.forms.TextInput\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">TextInput</span></code></a>.</p></li>\n<li><p>Valeur vide : <code class=\"docutils literal notranslate\"><span class=\"pre\">None</span></code></p></li>\n<li><p>Est normalisé en : un objet Python <code class=\"docutils literal notranslate\"><span class=\"pre\">decimal</span></code>.</p></li>\n<li><p>Valide que la valeur donnée est un nombre décimal. Utilise <a class=\"reference internal\" href=\"/fr/2.1/ref/validators/#django.core.validators.MaxValueValidator\" title=\"django.core.validators.MaxValueValidator\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">MaxValueValidator</span></code></a> et <a class=\"reference internal\" href=\"/fr/2.1/ref/validators/#django.core.validators.MinValueValidator\" title=\"django.core.validators.MinValueValidator\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">MinValueValidator</span></code></a> si <code class=\"docutils literal notranslate\"><span class=\"pre\">max_value</span></code> et <code class=\"docutils literal notranslate\"><span class=\"pre\">min_value</span></code> sont fournis. Les espaces de début et de fin sont ignorés.</p></li>\n<li><p>Clés de messages d’erreur : <code class=\"docutils literal notranslate\"><span class=\"pre\">required</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">invalid</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">max_value</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">min_value</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">max_digits</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">max_decimal_places</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">max_whole_digits</span></code></p></li>\n</ul>\n<p>Les messages d’erreur <code class=\"docutils literal notranslate\"><span class=\"pre\">max_value</span></code> et <code class=\"docutils literal notranslate\"><span class=\"pre\">min_value</span></code> peuvent contenir <code class=\"docutils literal notranslate\"><span class=\"pre\">%(limit_value)s</span></code>, qui sera remplacé par la limite concernée. Sur le même principe, les messages d’erreur <code class=\"docutils literal notranslate\"><span class=\"pre\">max_digits</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">max_decimal_places</span></code> et <code class=\"docutils literal notranslate\"><span class=\"pre\">max_whole_digits</span></code> peuvent contenir <code class=\"docutils literal notranslate\"><span class=\"pre\">%(max)s</span></code>.</p>\n<p>Accepte quatre paramètres facultatifs :</p>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.forms.DecimalField.max_value\">\n<span class=\"sig-name descname\"><span class=\"pre\">max_value</span></span><a class=\"heading-anchor\" href=\"#django.forms.DecimalField.max_value\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.forms.DecimalField.min_value\">\n<span class=\"sig-name descname\"><span class=\"pre\">min_value</span></span><a class=\"heading-anchor\" href=\"#django.forms.DecimalField.min_value\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Ces paramètres contrôlent les intervalles de valeurs autorisées dans le champ et doivent être exprimés en valeurs <code class=\"docutils literal notranslate\"><span class=\"pre\">decimal.Decimal</span></code>.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.forms.DecimalField.max_digits\">\n<span class=\"sig-name descname\"><span class=\"pre\">max_digits</span></span><a class=\"heading-anchor\" href=\"#django.forms.DecimalField.max_digits\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Le nombre maximum de chiffres autorisés dans la valeur (avant et après le point décimal, sans tenir compte des zéros initiaux).</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.forms.DecimalField.decimal_places\">\n<span class=\"sig-name descname\"><span class=\"pre\">decimal_places</span></span><a class=\"heading-anchor\" href=\"#django.forms.DecimalField.decimal_places\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Le nombre maximal de décimales autorisées.</p>\n</dd></dl>\n\n</dd></dl>\n\n</section>\n<section id=\"durationfield\">\n<h3><code class=\"docutils literal notranslate\"><span class=\"pre\">DurationField</span></code><a class=\"heading-anchor\" href=\"#durationfield\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.forms.DurationField\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">DurationField</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.forms.DurationField\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><ul class=\"simple\">\n<li><p>Composant par défaut : <a class=\"reference internal\" href=\"/fr/2.1/ref/forms/widgets/#django.forms.TextInput\" title=\"django.forms.TextInput\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">TextInput</span></code></a></p></li>\n<li><p>Valeur vide : <code class=\"docutils literal notranslate\"><span class=\"pre\">None</span></code></p></li>\n<li><p>Est normalisé en : un objet Python <a class=\"reference external\" href=\"https://docs.python.org/3/library/datetime.html#datetime.timedelta\" title=\"(disponible dans Python v3.14)\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">timedelta</span></code></a>.</p></li>\n<li><p>Valide que la valeur donnée est une chaîne qui peut être convertie en une différence de temps <code class=\"docutils literal notranslate\"><span class=\"pre\">timedelta</span></code>. La valeur doit être comprise entre <a class=\"reference external\" href=\"https://docs.python.org/3/library/datetime.html#datetime.timedelta.min\" title=\"(disponible dans Python v3.14)\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">datetime.timedelta.min</span></code></a> et <a class=\"reference external\" href=\"https://docs.python.org/3/library/datetime.html#datetime.timedelta.max\" title=\"(disponible dans Python v3.14)\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">datetime.timedelta.max</span></code></a>.</p></li>\n<li><p>Clés de messages d’erreur : <code class=\"docutils literal notranslate\"><span class=\"pre\">required</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">invalid</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">overflow</span></code>.</p></li>\n</ul>\n<p>Accepte tout format que <a class=\"reference internal\" href=\"/fr/2.1/ref/utils/#django.utils.dateparse.parse_duration\" title=\"django.utils.dateparse.parse_duration\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">parse_duration()</span></code></a> peut analyser.</p>\n</dd></dl>\n\n</section>\n<section id=\"emailfield\">\n<h3><code class=\"docutils literal notranslate\"><span class=\"pre\">EmailField</span></code><a class=\"heading-anchor\" href=\"#emailfield\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.forms.EmailField\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">EmailField</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.forms.EmailField\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><ul class=\"simple\">\n<li><p>Composant par défaut : <a class=\"reference internal\" href=\"/fr/2.1/ref/forms/widgets/#django.forms.EmailInput\" title=\"django.forms.EmailInput\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">EmailInput</span></code></a></p></li>\n<li><p>Valeur vide : <code class=\"docutils literal notranslate\"><span class=\"pre\">''</span></code> (une chaîne vide)</p></li>\n<li><p>Est normalisé en : une chaîne.</p></li>\n<li><p>Utilise <a class=\"reference internal\" href=\"/fr/2.1/ref/validators/#django.core.validators.EmailValidator\" title=\"django.core.validators.EmailValidator\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">EmailValidator</span></code></a> pour valider que la valeur donnée est une adresse de courriel valide, en utilisant une expression régulière moyennement complexe.</p></li>\n<li><p>Clés de messages d’erreur : <code class=\"docutils literal notranslate\"><span class=\"pre\">required</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">invalid</span></code></p></li>\n</ul>\n<p>Accepte deux paramètres facultatifs pour la validation, <code class=\"docutils literal notranslate\"><span class=\"pre\">max_length</span></code> et <code class=\"docutils literal notranslate\"><span class=\"pre\">min_length</span></code>. S’ils sont présents, ils garantissent que la chaîne de caractères correspond au maximum ou au minimum à la longueur donnée.</p>\n</dd></dl>\n\n</section>\n<section id=\"filefield\">\n<h3><code class=\"docutils literal notranslate\"><span class=\"pre\">FileField</span></code><a class=\"heading-anchor\" href=\"#filefield\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.forms.FileField\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">FileField</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.forms.FileField\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><ul class=\"simple\">\n<li><p>Composant par défaut : <a class=\"reference internal\" href=\"/fr/2.1/ref/forms/widgets/#django.forms.ClearableFileInput\" title=\"django.forms.ClearableFileInput\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">ClearableFileInput</span></code></a></p></li>\n<li><p>Valeur vide : <code class=\"docutils literal notranslate\"><span class=\"pre\">None</span></code></p></li>\n<li><p>Est normalisé en : un objet <code class=\"docutils literal notranslate\"><span class=\"pre\">UploadedFile</span></code> englobant le contenu du fichier et son nom dans un seul objet.</p></li>\n<li><p>Peut valider que des données de fichier non vides ont été fournies au formulaire.</p></li>\n<li><p>Clés de messages d’erreur : <code class=\"docutils literal notranslate\"><span class=\"pre\">required</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">invalid</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">missing</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">empty</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">max_length</span></code></p></li>\n</ul>\n<p>Accepte deux paramètres facultatifs pour la validation, <code class=\"docutils literal notranslate\"><span class=\"pre\">max_length</span></code> et <code class=\"docutils literal notranslate\"><span class=\"pre\">allow_empty_file</span></code>. S’ils sont présents, ils garantissent respectivement que la longueur du nom de fichier ne dépasse pas la longueur indiquée et que la validation passe même quand le contenu du fichier est vide.</p>\n<p>Pour en savoir plus au sujet de l’objet <code class=\"docutils literal notranslate\"><span class=\"pre\">UploadedFile</span></code>, consultez la <a class=\"reference internal\" href=\"/fr/2.1/topics/http/file-uploads/\"><span class=\"doc\">documentation sur les envois de fichiers</span></a>.</p>\n<p>Lorsque vous utilisez un champ <code class=\"docutils literal notranslate\"><span class=\"pre\">FileField</span></code> dans un formulaire, vous ne devez pas oublier de <a class=\"reference internal\" href=\"/fr/2.1/ref/forms/api/#binding-uploaded-files\"><span class=\"std std-ref\">lier les données de fichier au formulaire</span></a>.</p>\n<p>L’erreur <code class=\"docutils literal notranslate\"><span class=\"pre\">max_length</span></code> porte sur la longueur du nom de fichier. Dans le message d’erreur de cette clé, <code class=\"docutils literal notranslate\"><span class=\"pre\">%(max)d</span></code> sera remplacé par la longueur maximale du nom de fichier et <code class=\"docutils literal notranslate\"><span class=\"pre\">%(length)d</span></code> sera remplacé par la longueur effective du nom de fichier.</p>\n</dd></dl>\n\n</section>\n<section id=\"filepathfield\">\n<h3><code class=\"docutils literal notranslate\"><span class=\"pre\">FilePathField</span></code><a class=\"heading-anchor\" href=\"#filepathfield\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.forms.FilePathField\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">FilePathField</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.forms.FilePathField\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><ul class=\"simple\">\n<li><p>Composant par défaut : <a class=\"reference internal\" href=\"/fr/2.1/ref/forms/widgets/#django.forms.Select\" title=\"django.forms.Select\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">Select</span></code></a></p></li>\n<li><p>Valeur vide : <code class=\"docutils literal notranslate\"><span class=\"pre\">None</span></code></p></li>\n<li><p>Est normalisé en : une chaîne.</p></li>\n<li><p>Valide que le choix sélectionné existe dans la liste à choix.</p></li>\n<li><p>Clés de messages d’erreur : <code class=\"docutils literal notranslate\"><span class=\"pre\">required</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">invalid_choice</span></code></p></li>\n</ul>\n<p>Ce champ permet de choisir parmi des fichiers dans un répertoire désigné. Il accepte cinq paramètres supplémentaires ; seul <code class=\"docutils literal notranslate\"><span class=\"pre\">path</span></code> est obligatoire :</p>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.forms.FilePathField.path\">\n<span class=\"sig-name descname\"><span class=\"pre\">path</span></span><a class=\"heading-anchor\" href=\"#django.forms.FilePathField.path\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Le chemin absolu vers le répertoire dont le contenu doit être présent dans la liste. Ce répertoire doit exister.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.forms.FilePathField.recursive\">\n<span class=\"sig-name descname\"><span class=\"pre\">recursive</span></span><a class=\"heading-anchor\" href=\"#django.forms.FilePathField.recursive\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Si <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code> (valeur par défaut), seul le contenu au premier niveau de <code class=\"docutils literal notranslate\"><span class=\"pre\">path</span></code> sera à disposition dans les choix possibles. Si <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code>, le répertoire sera parcouru récursivement et tous ses descendants seront inclus dans les choix possibles.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.forms.FilePathField.match\">\n<span class=\"sig-name descname\"><span class=\"pre\">match</span></span><a class=\"heading-anchor\" href=\"#django.forms.FilePathField.match\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Un motif d’expression régulière ; seuls les fichiers dont les noms correspondent à cette expression seront disponibles dans la liste à choix.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.forms.FilePathField.allow_files\">\n<span class=\"sig-name descname\"><span class=\"pre\">allow_files</span></span><a class=\"heading-anchor\" href=\"#django.forms.FilePathField.allow_files\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Facultatif. Vaut <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code> ou <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code>. La valeur par défaut est <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code>. Indique si les fichiers de l’emplacement spécifié doivent être inclus. Il faut que l’une des deux valeurs, ce champ ou <a class=\"reference internal\" href=\"#django.forms.FilePathField.allow_folders\" title=\"django.forms.FilePathField.allow_folders\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">allow_folders</span></code></a>,  soit <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code>.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.forms.FilePathField.allow_folders\">\n<span class=\"sig-name descname\"><span class=\"pre\">allow_folders</span></span><a class=\"heading-anchor\" href=\"#django.forms.FilePathField.allow_folders\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Facultatif. Vaut <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code> ou <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code>. La valeur par défaut est <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code>. Indique si tous les répertoires à l’intérieur de l’emplacement spécifié doivent être inclus. Il faut que l’une des deux valeurs, ce champ ou <a class=\"reference internal\" href=\"#django.forms.FilePathField.allow_files\" title=\"django.forms.FilePathField.allow_files\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">allow_files</span></code></a>,  soit <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code>.</p>\n</dd></dl>\n\n</dd></dl>\n\n</section>\n<section id=\"floatfield\">\n<h3><code class=\"docutils literal notranslate\"><span class=\"pre\">FloatField</span></code><a class=\"heading-anchor\" href=\"#floatfield\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.forms.FloatField\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">FloatField</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.forms.FloatField\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><ul class=\"simple\">\n<li><p>Composant par défaut : <a class=\"reference internal\" href=\"/fr/2.1/ref/forms/widgets/#django.forms.NumberInput\" title=\"django.forms.NumberInput\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">NumberInput</span></code></a> lorsque <a class=\"reference internal\" href=\"#django.forms.Field.localize\" title=\"django.forms.Field.localize\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">Field.localize</span></code></a> vaut <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code>, sinon <a class=\"reference internal\" href=\"/fr/2.1/ref/forms/widgets/#django.forms.TextInput\" title=\"django.forms.TextInput\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">TextInput</span></code></a>.</p></li>\n<li><p>Valeur vide : <code class=\"docutils literal notranslate\"><span class=\"pre\">None</span></code></p></li>\n<li><p>Est normalisé en : un objet Python float.</p></li>\n<li><p>Valide que la valeur donnée est un nombre à virgule. Utilise <a class=\"reference internal\" href=\"/fr/2.1/ref/validators/#django.core.validators.MaxValueValidator\" title=\"django.core.validators.MaxValueValidator\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">MaxValueValidator</span></code></a> et <a class=\"reference internal\" href=\"/fr/2.1/ref/validators/#django.core.validators.MinValueValidator\" title=\"django.core.validators.MinValueValidator\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">MinValueValidator</span></code></a> si <code class=\"docutils literal notranslate\"><span class=\"pre\">max_value</span></code> et <code class=\"docutils literal notranslate\"><span class=\"pre\">min_value</span></code> sont fournis. Les espaces de début et de fin sont permis, comme pour la fonction <code class=\"docutils literal notranslate\"><span class=\"pre\">float()</span></code> de Python.</p></li>\n<li><p>Clés de messages d’erreur : <code class=\"docutils literal notranslate\"><span class=\"pre\">required</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">invalid</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">max_value</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">min_value</span></code></p></li>\n</ul>\n<p>Accepte deux paramètres facultatifs pour la validation, <code class=\"docutils literal notranslate\"><span class=\"pre\">max_value</span></code> et <code class=\"docutils literal notranslate\"><span class=\"pre\">min_value</span></code>. Ces paramètres contrôlent l’intervalle des valeurs autorisées dans ce champ.</p>\n</dd></dl>\n\n</section>\n<section id=\"imagefield\">\n<h3><code class=\"docutils literal notranslate\"><span class=\"pre\">ImageField</span></code><a class=\"heading-anchor\" href=\"#imagefield\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.forms.ImageField\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">ImageField</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.forms.ImageField\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><ul class=\"simple\">\n<li><p>Composant par défaut : <a class=\"reference internal\" href=\"/fr/2.1/ref/forms/widgets/#django.forms.ClearableFileInput\" title=\"django.forms.ClearableFileInput\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">ClearableFileInput</span></code></a></p></li>\n<li><p>Valeur vide : <code class=\"docutils literal notranslate\"><span class=\"pre\">None</span></code></p></li>\n<li><p>Est normalisé en : un objet <code class=\"docutils literal notranslate\"><span class=\"pre\">UploadedFile</span></code> englobant le contenu du fichier et son nom dans un seul objet.</p></li>\n<li><p>Valide que les données de fichier ont été liées au formulaire. Utilise aussi  <a class=\"reference internal\" href=\"/fr/2.1/ref/validators/#django.core.validators.FileExtensionValidator\" title=\"django.core.validators.FileExtensionValidator\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">FileExtensionValidator</span></code></a>  pour valider que l’extension de fichier est prise en charge par Pillow.</p></li>\n<li><p>Clés de messages d’erreur : <code class=\"docutils literal notranslate\"><span class=\"pre\">required</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">invalid</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">missing</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">empty</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">invalid_image</span></code></p></li>\n</ul>\n<p>L’emploi de <code class=\"docutils literal notranslate\"><span class=\"pre\">ImageField</span></code> requiert que <a class=\"reference external\" href=\"https://pillow.readthedocs.io/en/latest/\">Pillow</a> soit installé et gère les formats d’image que vous utilisez. Si vous obtenez une erreur d’image corrompue (<code class=\"docutils literal notranslate\"><span class=\"pre\">corrupt</span> <span class=\"pre\">image</span></code>) lorsque vous téléversez une image, cela signifie généralement que Pillow ne prend pas en charge son format. Pour corriger cela, installez la bibliothèque correspondante et réinstallez Pillow.</p>\n<p>Lorsque vous utilisez un champ <code class=\"docutils literal notranslate\"><span class=\"pre\">ImageField</span></code> dans un formulaire, vous ne devez pas oublier de <a class=\"reference internal\" href=\"/fr/2.1/ref/forms/api/#binding-uploaded-files\"><span class=\"std std-ref\">lier les données de fichier au formulaire</span></a>.</p>\n<p>Après que le champ a été nettoyé et validé, l’objet <code class=\"docutils literal notranslate\"><span class=\"pre\">UploadedFile</span></code> comportera un attribut supplémentaire <code class=\"docutils literal notranslate\"><span class=\"pre\">image</span></code> contenant l’instance <a class=\"reference external\" href=\"https://pillow.readthedocs.io/en/latest/reference/Image.html\">Image</a> de Pillow utilisée pour contrôler que le fichier est une image valide. De plus, <code class=\"docutils literal notranslate\"><span class=\"pre\">UploadedFile.content_type</span></code> sera également mis à jour avec le type de contenu de l’image pour autant que Pillow puisse le déterminer, sinon il prend la valeur <code class=\"docutils literal notranslate\"><span class=\"pre\">None</span></code>.</p>\n</dd></dl>\n\n</section>\n<section id=\"integerfield\">\n<h3><code class=\"docutils literal notranslate\"><span class=\"pre\">IntegerField</span></code><a class=\"heading-anchor\" href=\"#integerfield\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.forms.IntegerField\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">IntegerField</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.forms.IntegerField\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><ul class=\"simple\">\n<li><p>Composant par défaut : <a class=\"reference internal\" href=\"/fr/2.1/ref/forms/widgets/#django.forms.NumberInput\" title=\"django.forms.NumberInput\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">NumberInput</span></code></a> lorsque <a class=\"reference internal\" href=\"#django.forms.Field.localize\" title=\"django.forms.Field.localize\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">Field.localize</span></code></a> vaut <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code>, sinon <a class=\"reference internal\" href=\"/fr/2.1/ref/forms/widgets/#django.forms.TextInput\" title=\"django.forms.TextInput\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">TextInput</span></code></a>.</p></li>\n<li><p>Valeur vide : <code class=\"docutils literal notranslate\"><span class=\"pre\">None</span></code></p></li>\n<li><p>Est normalisé en : un nombre entier Python.</p></li>\n<li><p>Valide que la valeur donnée est un nombre entier. Utilise <a class=\"reference internal\" href=\"/fr/2.1/ref/validators/#django.core.validators.MaxValueValidator\" title=\"django.core.validators.MaxValueValidator\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">MaxValueValidator</span></code></a> et <a class=\"reference internal\" href=\"/fr/2.1/ref/validators/#django.core.validators.MinValueValidator\" title=\"django.core.validators.MinValueValidator\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">MinValueValidator</span></code></a> si <code class=\"docutils literal notranslate\"><span class=\"pre\">max_value</span></code> et <code class=\"docutils literal notranslate\"><span class=\"pre\">min_value</span></code> sont fournis. Les espaces de début et de fin sont permis, comme pour la fonction <code class=\"docutils literal notranslate\"><span class=\"pre\">int()</span></code> de Python.</p></li>\n<li><p>Clés de messages d’erreur : <code class=\"docutils literal notranslate\"><span class=\"pre\">required</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">invalid</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">max_value</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">min_value</span></code></p></li>\n</ul>\n<p>Les messages d’erreur <code class=\"docutils literal notranslate\"><span class=\"pre\">max_value</span></code> et <code class=\"docutils literal notranslate\"><span class=\"pre\">min_value</span></code> peuvent contenir <code class=\"docutils literal notranslate\"><span class=\"pre\">%(limit_value)s</span></code>, qui sera remplacé par la limite concernée.</p>\n<p>Accepte deux paramètres facultatifs liés à la validation :</p>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.forms.IntegerField.max_value\">\n<span class=\"sig-name descname\"><span class=\"pre\">max_value</span></span><a class=\"heading-anchor\" href=\"#django.forms.IntegerField.max_value\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.forms.IntegerField.min_value\">\n<span class=\"sig-name descname\"><span class=\"pre\">min_value</span></span><a class=\"heading-anchor\" href=\"#django.forms.IntegerField.min_value\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Ces paramètres contrôlent l’intervalle des valeurs autorisées dans ce champ.</p>\n</dd></dl>\n\n</section>\n<section id=\"genericipaddressfield\">\n<h3><code class=\"docutils literal notranslate\"><span class=\"pre\">GenericIPAddressField</span></code><a class=\"heading-anchor\" href=\"#genericipaddressfield\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.forms.GenericIPAddressField\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">GenericIPAddressField</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.forms.GenericIPAddressField\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Un champ contenant soit une adresse IPv4, soit une adresse IPv6.</p>\n<ul class=\"simple\">\n<li><p>Composant par défaut : <a class=\"reference internal\" href=\"/fr/2.1/ref/forms/widgets/#django.forms.TextInput\" title=\"django.forms.TextInput\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">TextInput</span></code></a></p></li>\n<li><p>Valeur vide : <code class=\"docutils literal notranslate\"><span class=\"pre\">''</span></code> (une chaîne vide)</p></li>\n<li><p>Est normalisé en : une chaîne. Les adresses IPv6 sont normalisées selon la description ci-dessous.</p></li>\n<li><p>Valide que la valeur donnée est une adresse IP valide.</p></li>\n<li><p>Clés de messages d’erreur : <code class=\"docutils literal notranslate\"><span class=\"pre\">required</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">invalid</span></code></p></li>\n</ul>\n<p>La normalisation d’adresse IPv6 respecte la section 2.2 de la <span class=\"target\" id=\"index-2\"></span><a class=\"rfc reference external\" href=\"https://datatracker.ietf.org/doc/html/rfc4291.html#section-2.2\"><strong>RFC 4291 Section 2.2</strong></a>, y compris l’utilisation du format IPv4 suggéré dans le 3e paragraphe de cette section, comme <code class=\"docutils literal notranslate\"><span class=\"pre\">::ffff:192.0.2.0</span></code>. Par exemple, <code class=\"docutils literal notranslate\"><span class=\"pre\">2001:0::0:01</span></code> sera normalisé en <code class=\"docutils literal notranslate\"><span class=\"pre\">2001::1</span></code> et <code class=\"docutils literal notranslate\"><span class=\"pre\">::ffff:0a0a:0a0a</span></code> en <code class=\"docutils literal notranslate\"><span class=\"pre\">::ffff:10.10.10.10</span></code>. Tous les caractères sont convertis en minuscules.</p>\n<p>Accepte deux paramètres facultatifs :</p>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.forms.GenericIPAddressField.protocol\">\n<span class=\"sig-name descname\"><span class=\"pre\">protocol</span></span><a class=\"heading-anchor\" href=\"#django.forms.GenericIPAddressField.protocol\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Limite la validité des saisies au protocole indiqué. Les valeurs possibles sont <code class=\"docutils literal notranslate\"><span class=\"pre\">'both'</span></code> (les deux protocoles acceptés, valeur par défaut), <code class=\"docutils literal notranslate\"><span class=\"pre\">'IPv4'</span></code> ou <code class=\"docutils literal notranslate\"><span class=\"pre\">'IPv6'</span></code>. La correspondance n’est pas sensible à la casse.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.forms.GenericIPAddressField.unpack_ipv4\">\n<span class=\"sig-name descname\"><span class=\"pre\">unpack_ipv4</span></span><a class=\"heading-anchor\" href=\"#django.forms.GenericIPAddressField.unpack_ipv4\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Décode les adresses IPv4 mappées comme <code class=\"docutils literal notranslate\"><span class=\"pre\">::ffff:192.0.2.1</span></code>. Si cette option est activée, cette adresse serait décodée en <code class=\"docutils literal notranslate\"><span class=\"pre\">192.0.2.1</span></code>. L’option est désactivée par défaut. Utilisable uniquement quand <code class=\"docutils literal notranslate\"><span class=\"pre\">protocol</span></code> est défini à <code class=\"docutils literal notranslate\"><span class=\"pre\">'both'</span></code>.</p>\n</dd></dl>\n\n</dd></dl>\n\n</section>\n<section id=\"multiplechoicefield\">\n<h3><code class=\"docutils literal notranslate\"><span class=\"pre\">MultipleChoiceField</span></code><a class=\"heading-anchor\" href=\"#multiplechoicefield\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.forms.MultipleChoiceField\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">MultipleChoiceField</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.forms.MultipleChoiceField\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><ul class=\"simple\">\n<li><p>Composant par défaut : <a class=\"reference internal\" href=\"/fr/2.1/ref/forms/widgets/#django.forms.SelectMultiple\" title=\"django.forms.SelectMultiple\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">SelectMultiple</span></code></a></p></li>\n<li><p>Valeur vide : <code class=\"docutils literal notranslate\"><span class=\"pre\">[]</span></code> (une liste vide)</p></li>\n<li><p>Est normalisé en : une liste de chaînes.</p></li>\n<li><p>Valide que chaque valeur dans la liste donnée existe dans la liste à choix.</p></li>\n<li><p>Clés de messages d’erreur : <code class=\"docutils literal notranslate\"><span class=\"pre\">required</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">invalid_choice</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">invalid_list</span></code></p></li>\n</ul>\n<p>Le message d’erreur <code class=\"docutils literal notranslate\"><span class=\"pre\">invalid_choice</span></code> peut contenir <code class=\"docutils literal notranslate\"><span class=\"pre\">%(value)s</span></code>, qui sera remplacé par le choix sélectionné.</p>\n<p>Requiert un paramètre supplémentaire obligatoire, <code class=\"docutils literal notranslate\"><span class=\"pre\">choices</span></code>, comme pour <a class=\"reference internal\" href=\"#django.forms.ChoiceField\" title=\"django.forms.ChoiceField\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">ChoiceField</span></code></a>.</p>\n</dd></dl>\n\n</section>\n<section id=\"typedmultiplechoicefield\">\n<h3><code class=\"docutils literal notranslate\"><span class=\"pre\">TypedMultipleChoiceField</span></code><a class=\"heading-anchor\" href=\"#typedmultiplechoicefield\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.forms.TypedMultipleChoiceField\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">TypedMultipleChoiceField</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.forms.TypedMultipleChoiceField\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Similaire à <a class=\"reference internal\" href=\"#django.forms.MultipleChoiceField\" title=\"django.forms.MultipleChoiceField\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">MultipleChoiceField</span></code></a>, sauf que <a class=\"reference internal\" href=\"#django.forms.TypedMultipleChoiceField\" title=\"django.forms.TypedMultipleChoiceField\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">TypedMultipleChoiceField</span></code></a> accepte deux paramètres supplémentaires, <code class=\"docutils literal notranslate\"><span class=\"pre\">coerce</span></code> et <code class=\"docutils literal notranslate\"><span class=\"pre\">empty_value</span></code>.</p>\n<ul class=\"simple\">\n<li><p>Composant par défaut : <a class=\"reference internal\" href=\"/fr/2.1/ref/forms/widgets/#django.forms.SelectMultiple\" title=\"django.forms.SelectMultiple\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">SelectMultiple</span></code></a></p></li>\n<li><p>Valeur vide : ce qui a été indiqué dans <code class=\"docutils literal notranslate\"><span class=\"pre\">empty_value</span></code></p></li>\n<li><p>Est normalisé en : une liste de valeurs du type indiqué par le paramètre <code class=\"docutils literal notranslate\"><span class=\"pre\">coerce</span></code>.</p></li>\n<li><p>Valide que les valeurs données existent dans la liste à choix et qu’elles peuvent être transformées dans le bon type.</p></li>\n<li><p>Clés de messages d’erreur : <code class=\"docutils literal notranslate\"><span class=\"pre\">required</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">invalid_choice</span></code></p></li>\n</ul>\n<p>Le message d’erreur <code class=\"docutils literal notranslate\"><span class=\"pre\">invalid_choice</span></code> peut contenir <code class=\"docutils literal notranslate\"><span class=\"pre\">%(value)s</span></code>, qui sera remplacé par le choix sélectionné.</p>\n<p>Accepte deux paramètres supplémentaires, <code class=\"docutils literal notranslate\"><span class=\"pre\">coerce</span></code> et <code class=\"docutils literal notranslate\"><span class=\"pre\">empty_value</span></code>, comme pour <a class=\"reference internal\" href=\"#django.forms.TypedChoiceField\" title=\"django.forms.TypedChoiceField\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">TypedChoiceField</span></code></a>.</p>\n</dd></dl>\n\n</section>\n<section id=\"nullbooleanfield\">\n<h3><code class=\"docutils literal notranslate\"><span class=\"pre\">NullBooleanField</span></code><a class=\"heading-anchor\" href=\"#nullbooleanfield\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.forms.NullBooleanField\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">NullBooleanField</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.forms.NullBooleanField\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><ul class=\"simple\">\n<li><p>Composant par défaut : <a class=\"reference internal\" href=\"/fr/2.1/ref/forms/widgets/#django.forms.NullBooleanSelect\" title=\"django.forms.NullBooleanSelect\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">NullBooleanSelect</span></code></a></p></li>\n<li><p>Valeur vide : <code class=\"docutils literal notranslate\"><span class=\"pre\">None</span></code></p></li>\n<li><p>Est normalisé en : une valeur Python <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code> ou <code class=\"docutils literal notranslate\"><span class=\"pre\">None</span></code>.</p></li>\n<li><p>Ne valide rien (c’est-à-dire qu’il n’y a jamais d’exception <code class=\"docutils literal notranslate\"><span class=\"pre\">ValidationError</span></code>).</p></li>\n</ul>\n</dd></dl>\n\n</section>\n<section id=\"regexfield\">\n<h3><code class=\"docutils literal notranslate\"><span class=\"pre\">RegexField</span></code><a class=\"heading-anchor\" href=\"#regexfield\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.forms.RegexField\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">RegexField</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.forms.RegexField\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><ul class=\"simple\">\n<li><p>Composant par défaut : <a class=\"reference internal\" href=\"/fr/2.1/ref/forms/widgets/#django.forms.TextInput\" title=\"django.forms.TextInput\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">TextInput</span></code></a></p></li>\n<li><p>Valeur vide : <code class=\"docutils literal notranslate\"><span class=\"pre\">''</span></code> (une chaîne vide)</p></li>\n<li><p>Est normalisé en : une chaîne.</p></li>\n<li><p>Utilise <a class=\"reference internal\" href=\"/fr/2.1/ref/validators/#django.core.validators.RegexValidator\" title=\"django.core.validators.RegexValidator\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">RegexValidator</span></code></a> pour valider que la valeur donnée correspond à une certaine expression régulière.</p></li>\n<li><p>Clés de messages d’erreur : <code class=\"docutils literal notranslate\"><span class=\"pre\">required</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">invalid</span></code></p></li>\n</ul>\n<p>Requiert un paramètre supplémentaire obligatoire :</p>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.forms.RegexField.regex\">\n<span class=\"sig-name descname\"><span class=\"pre\">regex</span></span><a class=\"heading-anchor\" href=\"#django.forms.RegexField.regex\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Une expression régulière exprimée sous forme de chaîne ou d’objet expression régulière compilée.</p>\n</dd></dl>\n\n<p>Accepte également <code class=\"docutils literal notranslate\"><span class=\"pre\">max_length</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">min_length</span></code> et <code class=\"docutils literal notranslate\"><span class=\"pre\">strip</span></code>, qui fonctionnent exactement comme pour <a class=\"reference internal\" href=\"#django.forms.CharField\" title=\"django.forms.CharField\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">CharField</span></code></a>.</p>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.forms.RegexField.strip\">\n<span class=\"sig-name descname\"><span class=\"pre\">strip</span></span><a class=\"heading-anchor\" href=\"#django.forms.RegexField.strip\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Contient <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code> par défaut. Quand ce paramètre est activé, l’épuration des espaces initiales et finales s’effectue avant la validation par l’expression régulière.</p>\n</dd></dl>\n\n</dd></dl>\n\n</section>\n<section id=\"slugfield\">\n<h3><code class=\"docutils literal notranslate\"><span class=\"pre\">SlugField</span></code><a class=\"heading-anchor\" href=\"#slugfield\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.forms.SlugField\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">SlugField</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.forms.SlugField\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><ul class=\"simple\">\n<li><p>Composant par défaut : <a class=\"reference internal\" href=\"/fr/2.1/ref/forms/widgets/#django.forms.TextInput\" title=\"django.forms.TextInput\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">TextInput</span></code></a></p></li>\n<li><p>Valeur vide : <code class=\"docutils literal notranslate\"><span class=\"pre\">''</span></code> (une chaîne vide)</p></li>\n<li><p>Est normalisé en : une chaîne.</p></li>\n<li><p>Utilise <a class=\"reference internal\" href=\"/fr/2.1/ref/validators/#django.core.validators.validate_slug\" title=\"django.core.validators.validate_slug\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">validate_slug</span></code></a> ou <a class=\"reference internal\" href=\"/fr/2.1/ref/validators/#django.core.validators.validate_unicode_slug\" title=\"django.core.validators.validate_unicode_slug\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">validate_unicode_slug</span></code></a> pour valider que la valeur donnée ne contient que des lettres, des nombres, des soulignements et des tirets.</p></li>\n<li><p>Clés de messages d’erreur : <code class=\"docutils literal notranslate\"><span class=\"pre\">required</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">invalid</span></code></p></li>\n</ul>\n<p>Ce champ est prévu pour l’affichage des champs de modèle <a class=\"reference internal\" href=\"/fr/2.1/ref/models/fields/#django.db.models.SlugField\" title=\"django.db.models.SlugField\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">SlugField</span></code></a> dans les formulaires.</p>\n<p>Accepte un paramètre facultatif :</p>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.forms.SlugField.allow_unicode\">\n<span class=\"sig-name descname\"><span class=\"pre\">allow_unicode</span></span><a class=\"heading-anchor\" href=\"#django.forms.SlugField.allow_unicode\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Une valeur booléenne indiquant au champ d’accepter des lettres Unicode en plus des lettres ASCII de base. La valeur par défaut est <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code>.</p>\n</dd></dl>\n\n</dd></dl>\n\n</section>\n<section id=\"timefield\">\n<h3><code class=\"docutils literal notranslate\"><span class=\"pre\">TimeField</span></code><a class=\"heading-anchor\" href=\"#timefield\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.forms.TimeField\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">TimeField</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.forms.TimeField\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><ul class=\"simple\">\n<li><p>Composant par défaut : <a class=\"reference internal\" href=\"/fr/2.1/ref/forms/widgets/#django.forms.TimeInput\" title=\"django.forms.TimeInput\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">TimeInput</span></code></a></p></li>\n<li><p>Valeur vide : <code class=\"docutils literal notranslate\"><span class=\"pre\">None</span></code></p></li>\n<li><p>Est normalisé en : un objet Python <code class=\"docutils literal notranslate\"><span class=\"pre\">datetime.time</span></code>.</p></li>\n<li><p>Valide que la valeur donnée est un objet <code class=\"docutils literal notranslate\"><span class=\"pre\">datetime.time</span></code> ou une chaîne mise en forme dans un format d’heure particulier.</p></li>\n<li><p>Clés de messages d’erreur : <code class=\"docutils literal notranslate\"><span class=\"pre\">required</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">invalid</span></code></p></li>\n</ul>\n<p>Accepte un paramètre facultatif :</p>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.forms.TimeField.input_formats\">\n<span class=\"sig-name descname\"><span class=\"pre\">input_formats</span></span><a class=\"heading-anchor\" href=\"#django.forms.TimeField.input_formats\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Une liste de chaînes de format utilisées pour essayer de convertir une chaîne en un objet <code class=\"docutils literal notranslate\"><span class=\"pre\">datetime.time</span></code> valide.</p>\n</dd></dl>\n\n<p>Si aucun paramètre <code class=\"docutils literal notranslate\"><span class=\"pre\">input_formats</span></code> n’est indiqué, les formats de saisie par défaut sont :</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"s1\">&#39;%H:%M:%S&#39;</span><span class=\"p\">,</span>     <span class=\"c1\"># &#39;14:30:59&#39;</span>\n<span class=\"s1\">&#39;%H:%M&#39;</span><span class=\"p\">,</span>        <span class=\"c1\"># &#39;14:30&#39;</span>\n</code></pre></div>\n</dd></dl>\n\n</section>\n<section id=\"urlfield\">\n<h3><code class=\"docutils literal notranslate\"><span class=\"pre\">URLField</span></code><a class=\"heading-anchor\" href=\"#urlfield\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.forms.URLField\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">URLField</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.forms.URLField\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><ul class=\"simple\">\n<li><p>Composant par défaut : <a class=\"reference internal\" href=\"/fr/2.1/ref/forms/widgets/#django.forms.URLInput\" title=\"django.forms.URLInput\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">URLInput</span></code></a></p></li>\n<li><p>Valeur vide : <code class=\"docutils literal notranslate\"><span class=\"pre\">''</span></code> (une chaîne vide)</p></li>\n<li><p>Est normalisé en : une chaîne.</p></li>\n<li><p>Utilise <a class=\"reference internal\" href=\"/fr/2.1/ref/validators/#django.core.validators.URLValidator\" title=\"django.core.validators.URLValidator\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">URLValidator</span></code></a> pour valider que la valeur donnée est une URL valide.</p></li>\n<li><p>Clés de messages d’erreur : <code class=\"docutils literal notranslate\"><span class=\"pre\">required</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">invalid</span></code></p></li>\n</ul>\n<p>Accepte les paramètres facultatifs suivants :</p>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.forms.URLField.max_length\">\n<span class=\"sig-name descname\"><span class=\"pre\">max_length</span></span><a class=\"heading-anchor\" href=\"#django.forms.URLField.max_length\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.forms.URLField.min_length\">\n<span class=\"sig-name descname\"><span class=\"pre\">min_length</span></span><a class=\"heading-anchor\" href=\"#django.forms.URLField.min_length\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Ces paramètres sont identiques à <code class=\"docutils literal notranslate\"><span class=\"pre\">CharField.max_length</span></code> et <code class=\"docutils literal notranslate\"><span class=\"pre\">CharField.min_length</span></code>.</p>\n</dd></dl>\n\n</section>\n<section id=\"uuidfield\">\n<h3><code class=\"docutils literal notranslate\"><span class=\"pre\">UUIDField</span></code><a class=\"heading-anchor\" href=\"#uuidfield\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.forms.UUIDField\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">UUIDField</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.forms.UUIDField\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><ul class=\"simple\">\n<li><p>Composant par défaut : <a class=\"reference internal\" href=\"/fr/2.1/ref/forms/widgets/#django.forms.TextInput\" title=\"django.forms.TextInput\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">TextInput</span></code></a></p></li>\n<li><p>Valeur vide : <code class=\"docutils literal notranslate\"><span class=\"pre\">''</span></code> (une chaîne vide)</p></li>\n<li><p>Est normalisé en : un objet <a class=\"reference external\" href=\"https://docs.python.org/3/library/uuid.html#uuid.UUID\" title=\"(disponible dans Python v3.14)\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">UUID</span></code></a>.</p></li>\n<li><p>Clés de messages d’erreur : <code class=\"docutils literal notranslate\"><span class=\"pre\">required</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">invalid</span></code></p></li>\n</ul>\n<p>Ce champ accepte toute chaîne dans un format accepté par le paramètre <code class=\"docutils literal notranslate\"><span class=\"pre\">hex</span></code> du constructeur <a class=\"reference external\" href=\"https://docs.python.org/3/library/uuid.html#uuid.UUID\" title=\"(disponible dans Python v3.14)\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">UUID</span></code></a>.</p>\n</dd></dl>\n\n</section>\n</section>\n<section id=\"slightly-complex-built-in-field-classes\">\n<h2>Classes de champs <code class=\"docutils literal notranslate\"><span class=\"pre\">Field</span></code> intégrées plus complexes<a class=\"heading-anchor\" href=\"#slightly-complex-built-in-field-classes\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h2>\n<section id=\"combofield\">\n<h3><code class=\"docutils literal notranslate\"><span class=\"pre\">ComboField</span></code><a class=\"heading-anchor\" href=\"#combofield\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.forms.ComboField\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">ComboField</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.forms.ComboField\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><ul class=\"simple\">\n<li><p>Composant par défaut : <a class=\"reference internal\" href=\"/fr/2.1/ref/forms/widgets/#django.forms.TextInput\" title=\"django.forms.TextInput\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">TextInput</span></code></a></p></li>\n<li><p>Valeur vide : <code class=\"docutils literal notranslate\"><span class=\"pre\">''</span></code> (une chaîne vide)</p></li>\n<li><p>Est normalisé en : une chaîne.</p></li>\n<li><p>Valide que la valeur donnée est valide pour chacun des champs indiqués en paramètre de <code class=\"docutils literal notranslate\"><span class=\"pre\">ComboField</span></code>.</p></li>\n<li><p>Clés de messages d’erreur : <code class=\"docutils literal notranslate\"><span class=\"pre\">required</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">invalid</span></code></p></li>\n</ul>\n<p>Requiert un paramètre supplémentaire obligatoire :</p>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.forms.ComboField.fields\">\n<span class=\"sig-name descname\"><span class=\"pre\">fields</span></span><a class=\"heading-anchor\" href=\"#django.forms.ComboField.fields\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>La liste des champs devant être utilisés pour valider la valeur du champ (dans l’ordre de leur présentation).</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.forms</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">ComboField</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">f</span> <span class=\"o\">=</span> <span class=\"n\">ComboField</span><span class=\"p\">(</span><span class=\"n\">fields</span><span class=\"o\">=</span><span class=\"p\">[</span><span class=\"n\">CharField</span><span class=\"p\">(</span><span class=\"n\">max_length</span><span class=\"o\">=</span><span class=\"mi\">20</span><span class=\"p\">),</span> <span class=\"n\">EmailField</span><span class=\"p\">()])</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">f</span><span class=\"o\">.</span><span class=\"n\">clean</span><span class=\"p\">(</span><span class=\"s1\">&#39;test@example.com&#39;</span><span class=\"p\">)</span>\n<span class=\"go\">&#39;test@example.com&#39;</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">f</span><span class=\"o\">.</span><span class=\"n\">clean</span><span class=\"p\">(</span><span class=\"s1\">&#39;longemailaddress@example.com&#39;</span><span class=\"p\">)</span>\n<span class=\"gt\">Traceback (most recent call last):</span>\n<span class=\"c\">...</span>\n<span class=\"gr\">ValidationError</span>: <span class=\"n\">[&#39;Ensure this value has at most 20 characters (it has 28).&#39;]</span>\n</code></pre></div>\n</dd></dl>\n\n</dd></dl>\n\n</section>\n<section id=\"multivaluefield\">\n<h3><code class=\"docutils literal notranslate\"><span class=\"pre\">MultiValueField</span></code><a class=\"heading-anchor\" href=\"#multivaluefield\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.forms.MultiValueField\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">MultiValueField</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">fields</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">()</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.forms.MultiValueField\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><ul class=\"simple\">\n<li><p>Composant par défaut : <a class=\"reference internal\" href=\"/fr/2.1/ref/forms/widgets/#django.forms.TextInput\" title=\"django.forms.TextInput\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">TextInput</span></code></a></p></li>\n<li><p>Valeur vide : <code class=\"docutils literal notranslate\"><span class=\"pre\">''</span></code> (une chaîne vide)</p></li>\n<li><p>Est normalisé en : le type renvoyé par la méthode <code class=\"docutils literal notranslate\"><span class=\"pre\">compress</span></code> de la sous-classe.</p></li>\n<li><p>Valide que les valeurs données sont valides pour chacun des champs indiqués en paramètre de <code class=\"docutils literal notranslate\"><span class=\"pre\">MultiValueField</span></code>.</p></li>\n<li><p>Clés de messages d’erreur : <code class=\"docutils literal notranslate\"><span class=\"pre\">required</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">invalid</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">incomplete</span></code></p></li>\n</ul>\n<p>Agrège la logique de plusieurs champs qui produisent une seule valeur en commun.</p>\n<p>Ce champ est abstrait et doit être hérité. Au contraire des champs à valeur unique, les sous-classes de <a class=\"reference internal\" href=\"#django.forms.MultiValueField\" title=\"django.forms.MultiValueField\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">MultiValueField</span></code></a> ne doivent pas implémenter <a class=\"reference internal\" href=\"#django.forms.Field.clean\" title=\"django.forms.Field.clean\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">clean()</span></code></a> mais plutôt <a class=\"reference internal\" href=\"#django.forms.MultiValueField.compress\" title=\"django.forms.MultiValueField.compress\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">compress()</span></code></a>.</p>\n<p>Requiert un paramètre supplémentaire obligatoire :</p>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.forms.MultiValueField.fields\">\n<span class=\"sig-name descname\"><span class=\"pre\">fields</span></span><a class=\"heading-anchor\" href=\"#django.forms.MultiValueField.fields\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Un tuple de champs dont les valeurs sont nettoyées puis ultérieurement combinées en une seule valeur. Chaque valeur du champ est nettoyée par le champ correspondant dans <code class=\"docutils literal notranslate\"><span class=\"pre\">fields</span></code> – la première valeur est nettoyée par le premier champ, la deuxième valeur par le deuxième champ, etc. Lorsque tous les champs ont été nettoyés, la liste de ces valeurs est combinée en une valeur unique par <a class=\"reference internal\" href=\"#django.forms.MultiValueField.compress\" title=\"django.forms.MultiValueField.compress\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">compress()</span></code></a>.</p>\n</dd></dl>\n\n<p>Accepte aussi des paramètre facultatifs :</p>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.forms.MultiValueField.require_all_fields\">\n<span class=\"sig-name descname\"><span class=\"pre\">require_all_fields</span></span><a class=\"heading-anchor\" href=\"#django.forms.MultiValueField.require_all_fields\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>La valeur par défaut est <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code>, auquel cas une erreur de validation <code class=\"docutils literal notranslate\"><span class=\"pre\">required</span></code> est générée si aucune valeur n’est fournie pour aucun champ.</p>\n<p>Lorsque la valeur est <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code>, l’attribut <a class=\"reference internal\" href=\"#django.forms.Field.required\" title=\"django.forms.Field.required\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">Field.required</span></code></a> peut être défini à <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code> pour des champs individuels pour les rendre facultatifs. Si aucune valeur n’est fournie pour un champ obligatoire, une erreur de validation <code class=\"docutils literal notranslate\"><span class=\"pre\">incomplete</span></code> est générée.</p>\n<p>Un message d’erreur <code class=\"docutils literal notranslate\"><span class=\"pre\">incomplete</span></code> par défaut peut être défini dans la sous-classe de <a class=\"reference internal\" href=\"#django.forms.MultiValueField\" title=\"django.forms.MultiValueField\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">MultiValueField</span></code></a>, ou il est possible de définir des messages différents pour chaque champ individuellement. Par exemple :</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.core.validators</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">RegexValidator</span>\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">PhoneField</span><span class=\"p\">(</span><span class=\"n\">MultiValueField</span><span class=\"p\">):</span>\n    <span class=\"k\">def</span><span class=\"w\"> </span><span class=\"fm\">__init__</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> <span class=\"o\">**</span><span class=\"n\">kwargs</span><span class=\"p\">):</span>\n        <span class=\"c1\"># Define one message for all fields.</span>\n        <span class=\"n\">error_messages</span> <span class=\"o\">=</span> <span class=\"p\">{</span>\n            <span class=\"s1\">&#39;incomplete&#39;</span><span class=\"p\">:</span> <span class=\"s1\">&#39;Enter a country calling code and a phone number.&#39;</span><span class=\"p\">,</span>\n        <span class=\"p\">}</span>\n        <span class=\"c1\"># Or define a different message for each field.</span>\n        <span class=\"n\">fields</span> <span class=\"o\">=</span> <span class=\"p\">(</span>\n            <span class=\"n\">CharField</span><span class=\"p\">(</span>\n                <span class=\"n\">error_messages</span><span class=\"o\">=</span><span class=\"p\">{</span><span class=\"s1\">&#39;incomplete&#39;</span><span class=\"p\">:</span> <span class=\"s1\">&#39;Enter a country calling code.&#39;</span><span class=\"p\">},</span>\n                <span class=\"n\">validators</span><span class=\"o\">=</span><span class=\"p\">[</span>\n                    <span class=\"n\">RegexValidator</span><span class=\"p\">(</span><span class=\"sa\">r</span><span class=\"s1\">&#39;^[0-9]+$&#39;</span><span class=\"p\">,</span> <span class=\"s1\">&#39;Enter a valid country calling code.&#39;</span><span class=\"p\">),</span>\n                <span class=\"p\">],</span>\n            <span class=\"p\">),</span>\n            <span class=\"n\">CharField</span><span class=\"p\">(</span>\n                <span class=\"n\">error_messages</span><span class=\"o\">=</span><span class=\"p\">{</span><span class=\"s1\">&#39;incomplete&#39;</span><span class=\"p\">:</span> <span class=\"s1\">&#39;Enter a phone number.&#39;</span><span class=\"p\">},</span>\n                <span class=\"n\">validators</span><span class=\"o\">=</span><span class=\"p\">[</span><span class=\"n\">RegexValidator</span><span class=\"p\">(</span><span class=\"sa\">r</span><span class=\"s1\">&#39;^[0-9]+$&#39;</span><span class=\"p\">,</span> <span class=\"s1\">&#39;Enter a valid phone number.&#39;</span><span class=\"p\">)],</span>\n            <span class=\"p\">),</span>\n            <span class=\"n\">CharField</span><span class=\"p\">(</span>\n                <span class=\"n\">validators</span><span class=\"o\">=</span><span class=\"p\">[</span><span class=\"n\">RegexValidator</span><span class=\"p\">(</span><span class=\"sa\">r</span><span class=\"s1\">&#39;^[0-9]+$&#39;</span><span class=\"p\">,</span> <span class=\"s1\">&#39;Enter a valid extension.&#39;</span><span class=\"p\">)],</span>\n                <span class=\"n\">required</span><span class=\"o\">=</span><span class=\"kc\">False</span><span class=\"p\">,</span>\n            <span class=\"p\">),</span>\n        <span class=\"p\">)</span>\n        <span class=\"nb\">super</span><span class=\"p\">()</span><span class=\"o\">.</span><span class=\"fm\">__init__</span><span class=\"p\">(</span>\n            <span class=\"n\">error_messages</span><span class=\"o\">=</span><span class=\"n\">error_messages</span><span class=\"p\">,</span> <span class=\"n\">fields</span><span class=\"o\">=</span><span class=\"n\">fields</span><span class=\"p\">,</span>\n            <span class=\"n\">require_all_fields</span><span class=\"o\">=</span><span class=\"kc\">False</span><span class=\"p\">,</span> <span class=\"o\">**</span><span class=\"n\">kwargs</span>\n        <span class=\"p\">)</span>\n</code></pre></div>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.forms.MultiValueField.widget\">\n<span class=\"sig-name descname\"><span class=\"pre\">widget</span></span><a class=\"heading-anchor\" href=\"#django.forms.MultiValueField.widget\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Doit être une sous-classe de <a class=\"reference internal\" href=\"/fr/2.1/ref/forms/widgets/#django.forms.MultiWidget\" title=\"django.forms.MultiWidget\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">django.forms.MultiWidget</span></code></a>. La valeur par défaut est <a class=\"reference internal\" href=\"/fr/2.1/ref/forms/widgets/#django.forms.TextInput\" title=\"django.forms.TextInput\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">TextInput</span></code></a>, qui n’est probablement pas très utile dans ce cas.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.forms.MultiValueField.compress\">\n<span class=\"sig-name descname\"><span class=\"pre\">compress</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">data_list</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.forms.MultiValueField.compress\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Accepte une liste de valeurs valides et renvoie une version « compressée » de ces valeurs dans une seule valeur. Par exemple, <a class=\"reference internal\" href=\"#django.forms.SplitDateTimeField\" title=\"django.forms.SplitDateTimeField\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">SplitDateTimeField</span></code></a> est une sous-classe qui combine un champ heure et un champ date en un seul objet <code class=\"docutils literal notranslate\"><span class=\"pre\">datetime</span></code>.</p>\n<p>Cette méthode doit être implémentée par les sous-classes.</p>\n</dd></dl>\n\n</dd></dl>\n\n</section>\n<section id=\"splitdatetimefield\">\n<h3><code class=\"docutils literal notranslate\"><span class=\"pre\">SplitDateTimeField</span></code><a class=\"heading-anchor\" href=\"#splitdatetimefield\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.forms.SplitDateTimeField\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">SplitDateTimeField</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.forms.SplitDateTimeField\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><ul class=\"simple\">\n<li><p>Composant par défaut : <a class=\"reference internal\" href=\"/fr/2.1/ref/forms/widgets/#django.forms.SplitDateTimeWidget\" title=\"django.forms.SplitDateTimeWidget\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">SplitDateTimeWidget</span></code></a></p></li>\n<li><p>Valeur vide : <code class=\"docutils literal notranslate\"><span class=\"pre\">None</span></code></p></li>\n<li><p>Est normalisé en : un objet Python <code class=\"docutils literal notranslate\"><span class=\"pre\">datetime.datetime</span></code>.</p></li>\n<li><p>Valide que la valeur donnée est un objet <code class=\"docutils literal notranslate\"><span class=\"pre\">datetime.datetime</span></code> ou une chaîne mise en forme dans un format de date/heure particulier.</p></li>\n<li><p>Clés de messages d’erreur : <code class=\"docutils literal notranslate\"><span class=\"pre\">required</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">invalid</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">invalid_date</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">invalid_time</span></code></p></li>\n</ul>\n<p>Accepte deux paramètres facultatifs :</p>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.forms.SplitDateTimeField.input_date_formats\">\n<span class=\"sig-name descname\"><span class=\"pre\">input_date_formats</span></span><a class=\"heading-anchor\" href=\"#django.forms.SplitDateTimeField.input_date_formats\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Une liste de chaînes de format utilisées pour essayer de convertir une chaîne en un objet <code class=\"docutils literal notranslate\"><span class=\"pre\">datetime.date</span></code> valide.</p>\n</dd></dl>\n\n<p>Si aucun paramètre <code class=\"docutils literal notranslate\"><span class=\"pre\">input_date_formats</span></code> n’est indiqué, ce sont les formats de saisie par défaut de <a class=\"reference internal\" href=\"#django.forms.DateField\" title=\"django.forms.DateField\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">DateField</span></code></a> qui sont utilisés.</p>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.forms.SplitDateTimeField.input_time_formats\">\n<span class=\"sig-name descname\"><span class=\"pre\">input_time_formats</span></span><a class=\"heading-anchor\" href=\"#django.forms.SplitDateTimeField.input_time_formats\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Une liste de chaînes de format utilisées pour essayer de convertir une chaîne en un objet <code class=\"docutils literal notranslate\"><span class=\"pre\">datetime.time</span></code> valide.</p>\n</dd></dl>\n\n<p>Si aucun paramètre <code class=\"docutils literal notranslate\"><span class=\"pre\">input_time_formats</span></code> n’est indiqué, ce sont les formats de saisie par défaut de <a class=\"reference internal\" href=\"#django.forms.TimeField\" title=\"django.forms.TimeField\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">TimeField</span></code></a> qui sont utilisés.</p>\n</dd></dl>\n\n</section>\n</section>\n<section id=\"fields-which-handle-relationships\">\n<h2>Champs dédiés aux relations<a class=\"heading-anchor\" href=\"#fields-which-handle-relationships\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Deux champs sont disponibles pour représenter les relations entre modèles : <a class=\"reference internal\" href=\"#django.forms.ModelChoiceField\" title=\"django.forms.ModelChoiceField\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">ModelChoiceField</span></code></a> and <a class=\"reference internal\" href=\"#django.forms.ModelMultipleChoiceField\" title=\"django.forms.ModelMultipleChoiceField\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">ModelMultipleChoiceField</span></code></a>. Ces deux champs exigent un seul paramètre <code class=\"docutils literal notranslate\"><span class=\"pre\">queryset</span></code> utilisé pour créer les choix du champ. Lors de la validation du formulaire, ces champs placent soit un objet de modèle (dans le cas de <code class=\"docutils literal notranslate\"><span class=\"pre\">ModelChoiceField</span></code>), soit plusieurs objets de modèle (dans le cas de <code class=\"docutils literal notranslate\"><span class=\"pre\">ModelMultipleChoiceField</span></code>) dans le dictionnaire <code class=\"docutils literal notranslate\"><span class=\"pre\">cleaned_data</span></code> du formulaire.</p>\n<p>Pour des usages plus complexes, il est possible d’indiquer <code class=\"docutils literal notranslate\"><span class=\"pre\">queryset=None</span></code> au moment de déclarer le champ de formulaire, puis de remplir <code class=\"docutils literal notranslate\"><span class=\"pre\">queryset</span></code> dans la méthode <code class=\"docutils literal notranslate\"><span class=\"pre\">__init__()</span></code> du formulaire :</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">FooMultipleChoiceForm</span><span class=\"p\">(</span><span class=\"n\">forms</span><span class=\"o\">.</span><span class=\"n\">Form</span><span class=\"p\">):</span>\n    <span class=\"n\">foo_select</span> <span class=\"o\">=</span> <span class=\"n\">forms</span><span class=\"o\">.</span><span class=\"n\">ModelMultipleChoiceField</span><span class=\"p\">(</span><span class=\"n\">queryset</span><span class=\"o\">=</span><span class=\"kc\">None</span><span class=\"p\">)</span>\n\n    <span class=\"k\">def</span><span class=\"w\"> </span><span class=\"fm\">__init__</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> <span class=\"o\">*</span><span class=\"n\">args</span><span class=\"p\">,</span> <span class=\"o\">**</span><span class=\"n\">kwargs</span><span class=\"p\">):</span>\n        <span class=\"nb\">super</span><span class=\"p\">()</span><span class=\"o\">.</span><span class=\"fm\">__init__</span><span class=\"p\">(</span><span class=\"o\">*</span><span class=\"n\">args</span><span class=\"p\">,</span> <span class=\"o\">**</span><span class=\"n\">kwargs</span><span class=\"p\">)</span>\n        <span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">fields</span><span class=\"p\">[</span><span class=\"s1\">&#39;foo_select&#39;</span><span class=\"p\">]</span><span class=\"o\">.</span><span class=\"n\">queryset</span> <span class=\"o\">=</span> <span class=\"o\">...</span>\n</code></pre></div>\n<section id=\"modelchoicefield\">\n<h3><code class=\"docutils literal notranslate\"><span class=\"pre\">ModelChoiceField</span></code><a class=\"heading-anchor\" href=\"#modelchoicefield\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.forms.ModelChoiceField\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">ModelChoiceField</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.forms.ModelChoiceField\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><ul class=\"simple\">\n<li><p>Composant par défaut : <a class=\"reference internal\" href=\"/fr/2.1/ref/forms/widgets/#django.forms.Select\" title=\"django.forms.Select\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">Select</span></code></a></p></li>\n<li><p>Valeur vide : <code class=\"docutils literal notranslate\"><span class=\"pre\">None</span></code></p></li>\n<li><p>Est normalisé en : une instance de modèle.</p></li>\n<li><p>Valide que l’identifiant donné existe dans le jeu de requête.</p></li>\n<li><p>Clés de messages d’erreur : <code class=\"docutils literal notranslate\"><span class=\"pre\">required</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">invalid_choice</span></code></p></li>\n</ul>\n<p>Permet de sélectionner un seul objet de modèle, adapté à la représentation d’une clé étrangère. Notez que le composant par défaut de <code class=\"docutils literal notranslate\"><span class=\"pre\">ModelChoiceField</span></code> devient difficilement utilisable au fur et à mesure que le nombre de choix possibles augmente. Il n’est pas recommandé de l’utiliser lorsque le nombre d’éléments à choix dépasse 100.</p>\n<p>Un seul paramètre est obligatoire :</p>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.forms.ModelChoiceField.queryset\">\n<span class=\"sig-name descname\"><span class=\"pre\">queryset</span></span><a class=\"heading-anchor\" href=\"#django.forms.ModelChoiceField.queryset\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Un jeu de requête <code class=\"docutils literal notranslate\"><span class=\"pre\">QuerySet</span></code> d’objets de modèles constituant la source des choix possibles pour le champ et qui est utilisé aussi pour valider le choix de l’utilisateur. Il est évalué au moment du rendu du formulaire.</p>\n</dd></dl>\n\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">ModelChoiceField</span></code> accepte aussi deux paramètres facultatifs :</p>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.forms.ModelChoiceField.empty_label\">\n<span class=\"sig-name descname\"><span class=\"pre\">empty_label</span></span><a class=\"heading-anchor\" href=\"#django.forms.ModelChoiceField.empty_label\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Par défaut, le composant <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;select&gt;</span></code> utilisé par <code class=\"docutils literal notranslate\"><span class=\"pre\">ModelChoiceField</span></code> comportera un choix vide en premier dans la liste. Vous pouvez adapter le texte de cette étiquette (qui est <code class=\"docutils literal notranslate\"><span class=\"pre\">&quot;---------&quot;</span></code> par défaut) au moyen de l’attribut <code class=\"docutils literal notranslate\"><span class=\"pre\">empty_label</span></code>, ou même désactiver complètement le choix vide en définissant <code class=\"docutils literal notranslate\"><span class=\"pre\">empty_label</span></code> à <code class=\"docutils literal notranslate\"><span class=\"pre\">None</span></code>:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"c1\"># A custom empty label</span>\n<span class=\"n\">field1</span> <span class=\"o\">=</span> <span class=\"n\">forms</span><span class=\"o\">.</span><span class=\"n\">ModelChoiceField</span><span class=\"p\">(</span><span class=\"n\">queryset</span><span class=\"o\">=...</span><span class=\"p\">,</span> <span class=\"n\">empty_label</span><span class=\"o\">=</span><span class=\"s2\">&quot;(Nothing)&quot;</span><span class=\"p\">)</span>\n\n<span class=\"c1\"># No empty label</span>\n<span class=\"n\">field2</span> <span class=\"o\">=</span> <span class=\"n\">forms</span><span class=\"o\">.</span><span class=\"n\">ModelChoiceField</span><span class=\"p\">(</span><span class=\"n\">queryset</span><span class=\"o\">=...</span><span class=\"p\">,</span> <span class=\"n\">empty_label</span><span class=\"o\">=</span><span class=\"kc\">None</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Notez que si un <code class=\"docutils literal notranslate\"><span class=\"pre\">ModelChoiceField</span></code> est obligatoire et qu’il contient une valeur initiale par défaut, aucun choix vide n’est créé (quelle que soit la valeur de <code class=\"docutils literal notranslate\"><span class=\"pre\">empty_label</span></code>).</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.forms.ModelChoiceField.to_field_name\">\n<span class=\"sig-name descname\"><span class=\"pre\">to_field_name</span></span><a class=\"heading-anchor\" href=\"#django.forms.ModelChoiceField.to_field_name\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Ce paramètre facultatif est utilisé pour désigner le champ à utiliser comme valeur des choix dans le composant du champ. Contrôlez qu’il s’agit bien d’un champ unique du modèle, sinon la valeur sélectionnée pourrait correspondre à plus d’un objet. Par défaut ce paramètre vaut <code class=\"docutils literal notranslate\"><span class=\"pre\">None</span></code>, ce qui signifie que c’est la clé primaire de chaque objet qui est utilisée. Par exemple :</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"c1\"># No custom to_field_name</span>\n<span class=\"n\">field1</span> <span class=\"o\">=</span> <span class=\"n\">forms</span><span class=\"o\">.</span><span class=\"n\">ModelChoiceField</span><span class=\"p\">(</span><span class=\"n\">queryset</span><span class=\"o\">=...</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>produirait :</p>\n<div class=\"code-block\" data-language=\"html\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Html</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Html code\"><code><span class=\"p\">&lt;</span><span class=\"nt\">select</span> <span class=\"na\">id</span><span class=\"o\">=</span><span class=\"s\">&quot;id_field1&quot;</span> <span class=\"na\">name</span><span class=\"o\">=</span><span class=\"s\">&quot;field1&quot;</span><span class=\"p\">&gt;</span>\n<span class=\"p\">&lt;</span><span class=\"nt\">option</span> <span class=\"na\">value</span><span class=\"o\">=</span><span class=\"s\">&quot;obj1.pk&quot;</span><span class=\"p\">&gt;</span>Object1<span class=\"p\">&lt;/</span><span class=\"nt\">option</span><span class=\"p\">&gt;</span>\n<span class=\"p\">&lt;</span><span class=\"nt\">option</span> <span class=\"na\">value</span><span class=\"o\">=</span><span class=\"s\">&quot;obj2.pk&quot;</span><span class=\"p\">&gt;</span>Object2<span class=\"p\">&lt;/</span><span class=\"nt\">option</span><span class=\"p\">&gt;</span>\n...\n<span class=\"p\">&lt;/</span><span class=\"nt\">select</span><span class=\"p\">&gt;</span>\n</code></pre></div>\n<p>et :</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"c1\"># to_field_name provided</span>\n<span class=\"n\">field2</span> <span class=\"o\">=</span> <span class=\"n\">forms</span><span class=\"o\">.</span><span class=\"n\">ModelChoiceField</span><span class=\"p\">(</span><span class=\"n\">queryset</span><span class=\"o\">=...</span><span class=\"p\">,</span> <span class=\"n\">to_field_name</span><span class=\"o\">=</span><span class=\"s2\">&quot;name&quot;</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>produirait :</p>\n<div class=\"code-block\" data-language=\"html\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Html</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Html code\"><code><span class=\"p\">&lt;</span><span class=\"nt\">select</span> <span class=\"na\">id</span><span class=\"o\">=</span><span class=\"s\">&quot;id_field2&quot;</span> <span class=\"na\">name</span><span class=\"o\">=</span><span class=\"s\">&quot;field2&quot;</span><span class=\"p\">&gt;</span>\n<span class=\"p\">&lt;</span><span class=\"nt\">option</span> <span class=\"na\">value</span><span class=\"o\">=</span><span class=\"s\">&quot;obj1.name&quot;</span><span class=\"p\">&gt;</span>Object1<span class=\"p\">&lt;/</span><span class=\"nt\">option</span><span class=\"p\">&gt;</span>\n<span class=\"p\">&lt;</span><span class=\"nt\">option</span> <span class=\"na\">value</span><span class=\"o\">=</span><span class=\"s\">&quot;obj2.name&quot;</span><span class=\"p\">&gt;</span>Object2<span class=\"p\">&lt;/</span><span class=\"nt\">option</span><span class=\"p\">&gt;</span>\n...\n<span class=\"p\">&lt;/</span><span class=\"nt\">select</span><span class=\"p\">&gt;</span>\n</code></pre></div>\n</dd></dl>\n\n<p>La méthode <code class=\"docutils literal notranslate\"><span class=\"pre\">__str__()</span></code> du modèle sera appelée pour générer les représentations textuelles des objets à faire figurer dans les choix du champ. Pour fournir des représentations personnalisées, créez une sous-classe de <code class=\"docutils literal notranslate\"><span class=\"pre\">ModelChoiceField</span></code> et surchargez <code class=\"docutils literal notranslate\"><span class=\"pre\">label_from_instance</span></code>. Cette méthode reçoit un objet de modèle et doit renvoyer une chaîne représentative de l’objet. Par exemple :</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.forms</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">ModelChoiceField</span>\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">MyModelChoiceField</span><span class=\"p\">(</span><span class=\"n\">ModelChoiceField</span><span class=\"p\">):</span>\n    <span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">label_from_instance</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> <span class=\"n\">obj</span><span class=\"p\">):</span>\n        <span class=\"k\">return</span> <span class=\"s2\">&quot;My Object #</span><span class=\"si\">%i</span><span class=\"s2\">&quot;</span> <span class=\"o\">%</span> <span class=\"n\">obj</span><span class=\"o\">.</span><span class=\"n\">id</span>\n</code></pre></div>\n</dd></dl>\n\n</section>\n<section id=\"modelmultiplechoicefield\">\n<h3><code class=\"docutils literal notranslate\"><span class=\"pre\">ModelMultipleChoiceField</span></code><a class=\"heading-anchor\" href=\"#modelmultiplechoicefield\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.forms.ModelMultipleChoiceField\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">ModelMultipleChoiceField</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.forms.ModelMultipleChoiceField\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><ul class=\"simple\">\n<li><p>Composant par défaut : <a class=\"reference internal\" href=\"/fr/2.1/ref/forms/widgets/#django.forms.SelectMultiple\" title=\"django.forms.SelectMultiple\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">SelectMultiple</span></code></a></p></li>\n<li><p>Valeur vide : un <code class=\"docutils literal notranslate\"><span class=\"pre\">QuerySet</span></code> vide (self.queryset.none())</p></li>\n<li><p>Est normalisé en : un <code class=\"docutils literal notranslate\"><span class=\"pre\">QuerySet</span></code> d’instances de modèles.</p></li>\n<li><p>Valide que chaque identifiant dans la liste donnée existe dans le jeu de requête.</p></li>\n<li><p>Clés de messages d’erreur : <code class=\"docutils literal notranslate\"><span class=\"pre\">required</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">list</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">invalid_choice</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">invalid_pk_value</span></code></p></li>\n</ul>\n<p>Le message d’erreur <code class=\"docutils literal notranslate\"><span class=\"pre\">invalid_choice</span></code> peut contenir <code class=\"docutils literal notranslate\"><span class=\"pre\">%(value)s</span></code> et le message <code class=\"docutils literal notranslate\"><span class=\"pre\">invalid_pk_value</span></code> peut contenir <code class=\"docutils literal notranslate\"><span class=\"pre\">%(pk)s</span></code>, qui seront substitués par les valeurs appropriées.</p>\n<p>Permet la sélection d’un ou de plusieurs objets de modèles, adapté à la représentation de relations plusieurs-à-plusieurs. Comme pour <a class=\"reference internal\" href=\"#django.forms.ModelChoiceField\" title=\"django.forms.ModelChoiceField\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">ModelChoiceField</span></code></a>, vous pouvez utiliser <code class=\"docutils literal notranslate\"><span class=\"pre\">label_from_instance</span></code> afin de personnaliser les représentations des objets.</p>\n<p>Un seul paramètre est obligatoire :</p>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.forms.ModelMultipleChoiceField.queryset\">\n<span class=\"sig-name descname\"><span class=\"pre\">queryset</span></span><a class=\"heading-anchor\" href=\"#django.forms.ModelMultipleChoiceField.queryset\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Identique à <a class=\"reference internal\" href=\"#django.forms.ModelChoiceField.queryset\" title=\"django.forms.ModelChoiceField.queryset\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">ModelChoiceField.queryset</span></code></a>.</p>\n</dd></dl>\n\n<p>Accepte un paramètre facultatif :</p>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.forms.ModelMultipleChoiceField.to_field_name\">\n<span class=\"sig-name descname\"><span class=\"pre\">to_field_name</span></span><a class=\"heading-anchor\" href=\"#django.forms.ModelMultipleChoiceField.to_field_name\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Identique à <a class=\"reference internal\" href=\"#django.forms.ModelChoiceField.to_field_name\" title=\"django.forms.ModelChoiceField.to_field_name\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">ModelChoiceField.to_field_name</span></code></a>.</p>\n</dd></dl>\n\n</dd></dl>\n\n</section>\n</section>\n<section id=\"creating-custom-fields\">\n<h2>Création de champs personnalisés<a class=\"heading-anchor\" href=\"#creating-custom-fields\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Si les classes <code class=\"docutils literal notranslate\"><span class=\"pre\">Field</span></code> intégrées ne correspondent pas à vos besoins, vous pouvez facilement créer des classes <code class=\"docutils literal notranslate\"><span class=\"pre\">Field</span></code> personnalisées. Pour cela, il suffit de créer une sous-classe de <code class=\"docutils literal notranslate\"><span class=\"pre\">django.forms.Field</span></code>. Les seules exigences sont que la méthode <code class=\"docutils literal notranslate\"><span class=\"pre\">clean()</span></code> doit être implémentée et que la méthode <code class=\"docutils literal notranslate\"><span class=\"pre\">__init__()</span></code> accepte les paramètres de base mentionnés plus haut (<code class=\"docutils literal notranslate\"><span class=\"pre\">required</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">label</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">initial</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">widget</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">help_text</span></code>).</p>\n<p>Il est aussi possible de personnaliser la manière dont un champ est accédé en surchargeant <a class=\"reference internal\" href=\"/fr/2.1/ref/forms/api/#django.forms.Field.get_bound_field\" title=\"django.forms.Field.get_bound_field\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">get_bound_field()</span></code></a>.</p>\n</section>","rootId":"module-django.forms.fields","toc":[{"title":"Paramètres principaux des champs","anchor":"core-field-arguments","children":[{"title":"required","anchor":"required","children":[]},{"title":"label","anchor":"label","children":[]},{"title":"label_suffix","anchor":"label-suffix","children":[]},{"title":"initial","anchor":"initial","children":[]},{"title":"widget","anchor":"widget","children":[]},{"title":"help_text","anchor":"help-text","children":[]},{"title":"error_messages","anchor":"error-messages","children":[]},{"title":"validators","anchor":"validators","children":[]},{"title":"localize","anchor":"localize","children":[]},{"title":"disabled","anchor":"disabled","children":[]}]},{"title":"Contrôle des données de champ modifiées","anchor":"checking-if-the-field-data-has-changed","children":[{"title":"has_changed()","anchor":"has-changed","children":[]}]},{"title":"Classes de champs Field intégrées","anchor":"built-in-field-classes","children":[{"title":"BooleanField","anchor":"booleanfield","children":[]},{"title":"CharField","anchor":"charfield","children":[]},{"title":"ChoiceField","anchor":"choicefield","children":[]},{"title":"TypedChoiceField","anchor":"typedchoicefield","children":[]},{"title":"DateField","anchor":"datefield","children":[]},{"title":"DateTimeField","anchor":"datetimefield","children":[]},{"title":"DecimalField","anchor":"decimalfield","children":[]},{"title":"DurationField","anchor":"durationfield","children":[]},{"title":"EmailField","anchor":"emailfield","children":[]},{"title":"FileField","anchor":"filefield","children":[]},{"title":"FilePathField","anchor":"filepathfield","children":[]},{"title":"FloatField","anchor":"floatfield","children":[]},{"title":"ImageField","anchor":"imagefield","children":[]},{"title":"IntegerField","anchor":"integerfield","children":[]},{"title":"GenericIPAddressField","anchor":"genericipaddressfield","children":[]},{"title":"MultipleChoiceField","anchor":"multiplechoicefield","children":[]},{"title":"TypedMultipleChoiceField","anchor":"typedmultiplechoicefield","children":[]},{"title":"NullBooleanField","anchor":"nullbooleanfield","children":[]},{"title":"RegexField","anchor":"regexfield","children":[]},{"title":"SlugField","anchor":"slugfield","children":[]},{"title":"TimeField","anchor":"timefield","children":[]},{"title":"URLField","anchor":"urlfield","children":[]},{"title":"UUIDField","anchor":"uuidfield","children":[]}]},{"title":"Classes de champs Field intégrées plus complexes","anchor":"slightly-complex-built-in-field-classes","children":[{"title":"ComboField","anchor":"combofield","children":[]},{"title":"MultiValueField","anchor":"multivaluefield","children":[]},{"title":"SplitDateTimeField","anchor":"splitdatetimefield","children":[]}]},{"title":"Champs dédiés aux relations","anchor":"fields-which-handle-relationships","children":[{"title":"ModelChoiceField","anchor":"modelchoicefield","children":[]},{"title":"ModelMultipleChoiceField","anchor":"modelmultiplechoicefield","children":[]}]},{"title":"Création de champs personnalisés","anchor":"creating-custom-fields","children":[]}],"breadcrumbs":[{"docname":"ref/index","title":"Référence de l’API","url":"/fr/2.1/ref/"},{"docname":"ref/forms/index","title":"Formulaires","url":"/fr/2.1/ref/forms/"}],"prev":{"docname":"ref/forms/api","title":"L’API des formulaires","url":"/fr/2.1/ref/forms/api/"},"next":{"docname":"ref/forms/models","title":"Fonctions de formulaires de modèles","url":"/fr/2.1/ref/forms/models/"},"formats":{"html":"/fr/2.1/ref/forms/fields/","markdown":"/fr/2.1/ref/forms/fields.md","json":"/fr/2.1/ref/forms/fields.json"},"source":"https://github.com/django/django/blob/stable/2.1.x/docs/ref/forms/fields.txt","official":"https://docs.djangoproject.com/fr/2.1/ref/forms/fields/","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"]}