{"title":"Champs de formulaires","version":"1.11","locale":"fr","docname":"ref/forms/fields","url":"/fr/1.11/ref/forms/fields/","canonical":"https://djangodocs.dev/fr/1.11/ref/forms/fields/","summary":"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\">class</span> </em><span class=\"sig-name descname\">Field</span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\">**</span>kwargs</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\">Form</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\">Field.</span><span class=\"sig-name descname\">clean</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">value</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\">Field</code> concerne la définition de classes <code class=\"docutils literal notranslate\">Form</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\">Field</code> possède une méthode <code class=\"docutils literal notranslate\">clean()</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\">django.forms.ValidationError</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=\"nn\">django</span> <span class=\"kn\">import</span> forms\n<span class=\"gp\">&gt;&gt;&gt; </span>f <span class=\"o\">=</span> forms<span class=\"o\">.</span>EmailField<span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>f<span class=\"o\">.</span>clean<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>f<span class=\"o\">.</span>clean<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>: [&#39;Enter a valid email address.&#39;]\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\">Field</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\">required</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\">Field.</span><span class=\"sig-name descname\">required</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\">Field</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\">None</code> ou une chaîne vide(<code class=\"docutils literal notranslate\">&quot;&quot;</code>)), <code class=\"docutils literal notranslate\">clean()</code> génère une exception <code class=\"docutils literal notranslate\">ValidationError</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=\"nn\">django</span> <span class=\"kn\">import</span> forms\n<span class=\"gp\">&gt;&gt;&gt; </span>f <span class=\"o\">=</span> forms<span class=\"o\">.</span>CharField<span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>f<span class=\"o\">.</span>clean<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>f<span class=\"o\">.</span>clean<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>: [&#39;This field is required.&#39;]\n<span class=\"gp\">&gt;&gt;&gt; </span>f<span class=\"o\">.</span>clean<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>: [&#39;This field is required.&#39;]\n<span class=\"gp\">&gt;&gt;&gt; </span>f<span class=\"o\">.</span>clean<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>f<span class=\"o\">.</span>clean<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>f<span class=\"o\">.</span>clean<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>f<span class=\"o\">.</span>clean<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\">required=False</code> au constructeur de <code class=\"docutils literal notranslate\">Field</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>f <span class=\"o\">=</span> forms<span class=\"o\">.</span>CharField<span class=\"p\">(</span>required<span class=\"o\">=</span><span class=\"kc\">False</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>f<span class=\"o\">.</span>clean<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>f<span class=\"o\">.</span>clean<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>f<span class=\"o\">.</span>clean<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>f<span class=\"o\">.</span>clean<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>f<span class=\"o\">.</span>clean<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>f<span class=\"o\">.</span>clean<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\">required=False</code> est défini pour un champ <code class=\"docutils literal notranslate\">Field</code> et que vous fournissez une valeur vide à <code class=\"docutils literal notranslate\">clean()</code>, la valeur renvoyée est une valeur vide <em>normalisée</em> et aucune exception <code class=\"docutils literal notranslate\">ValidationError</code> n’est générée. Pour <code class=\"docutils literal notranslate\">CharField</code>, il s’agit d’une chaîne vide Unicode. Pour les autres classes <code class=\"docutils literal notranslate\">Field</code>, il peut s’agir de <code class=\"docutils literal notranslate\">None</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\">required</code>. Il est possible de désactiver cela en définissant l’attribut <a class=\"reference internal\" href=\"/fr/1.11/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\">Form.use_required_attribute</code></a> à <code class=\"docutils literal notranslate\">False</code>. L’attribut <code class=\"docutils literal notranslate\">required</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<aside class=\"version-note version-added\" data-version=\"1.10\" role=\"note\">\n<p class=\"version-note-title\">New in Django 1.10</p><p>La prise en charge de l’attribut HTML <code class=\"docutils literal notranslate\">required</code> a été ajoutée.</p>\n</aside>\n</section>\n<section id=\"label\">\n<h3><code class=\"docutils literal notranslate\">label</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\">Field.</span><span class=\"sig-name descname\">label</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\">label</code> permet d’indiquer une étiquette conviviale pour le champ. Cette valeur est utilisée lorsque le champ <code class=\"docutils literal notranslate\">Field</code> est affiché dans un formulaire <code class=\"docutils literal notranslate\">Form</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\">Field</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\">label</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\">label</code> pour deux de ses champs. Nous avons indiqué <code class=\"docutils literal notranslate\">auto_id=False</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=\"nn\">django</span> <span class=\"kn\">import</span> forms\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"k\">class</span> <span class=\"nc\">CommentForm</span><span class=\"p\">(</span>forms<span class=\"o\">.</span>Form<span class=\"p\">):</span>\n<span class=\"gp\">... </span>    name <span class=\"o\">=</span> forms<span class=\"o\">.</span>CharField<span class=\"p\">(</span>label<span class=\"o\">=</span><span class=\"s1\">&#39;Your name&#39;</span><span class=\"p\">)</span>\n<span class=\"gp\">... </span>    url <span class=\"o\">=</span> forms<span class=\"o\">.</span>URLField<span class=\"p\">(</span>label<span class=\"o\">=</span><span class=\"s1\">&#39;Your website&#39;</span><span class=\"p\">,</span> required<span class=\"o\">=</span><span class=\"kc\">False</span><span class=\"p\">)</span>\n<span class=\"gp\">... </span>    comment <span class=\"o\">=</span> forms<span class=\"o\">.</span>CharField<span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>f <span class=\"o\">=</span> CommentForm<span class=\"p\">(</span>auto_id<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>f<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\">label_suffix</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\">Field.</span><span class=\"sig-name descname\">label_suffix</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\">label_suffix</code> permet de surcharger l’attribut <a class=\"reference internal\" href=\"/fr/1.11/ref/forms/api/#django.forms.Form.label_suffix\" title=\"django.forms.Form.label_suffix\"><code class=\"xref py py-attr docutils literal notranslate\">label_suffix</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=\"nc\">ContactForm</span><span class=\"p\">(</span>forms<span class=\"o\">.</span>Form<span class=\"p\">):</span>\n<span class=\"gp\">... </span>    age <span class=\"o\">=</span> forms<span class=\"o\">.</span>IntegerField<span class=\"p\">()</span>\n<span class=\"gp\">... </span>    nationality <span class=\"o\">=</span> forms<span class=\"o\">.</span>CharField<span class=\"p\">()</span>\n<span class=\"gp\">... </span>    captcha_answer <span class=\"o\">=</span> forms<span class=\"o\">.</span>IntegerField<span class=\"p\">(</span>label<span class=\"o\">=</span><span class=\"s1\">&#39;2 + 2&#39;</span><span class=\"p\">,</span> label_suffix<span class=\"o\">=</span><span class=\"s1\">&#39; =&#39;</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>f <span class=\"o\">=</span> ContactForm<span class=\"p\">(</span>label_suffix<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>f<span class=\"o\">.</span>as_p<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\">initial</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\">Field.</span><span class=\"sig-name descname\">initial</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\">initial</code> permet d’indiquer la valeur initiale à utiliser lors de l’affichage HTML du champ dans un formulaire <code class=\"docutils literal notranslate\">Form</code> non lié.</p>\n<p>Pour indiquer des données initiales dynamiques, voir le paramètre <a class=\"reference internal\" href=\"/fr/1.11/ref/forms/api/#django.forms.Form.initial\" title=\"django.forms.Form.initial\"><code class=\"xref py py-attr docutils literal notranslate\">Form.initial</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=\"nn\">django</span> <span class=\"kn\">import</span> forms\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"k\">class</span> <span class=\"nc\">CommentForm</span><span class=\"p\">(</span>forms<span class=\"o\">.</span>Form<span class=\"p\">):</span>\n<span class=\"gp\">... </span>    name <span class=\"o\">=</span> forms<span class=\"o\">.</span>CharField<span class=\"p\">(</span>initial<span class=\"o\">=</span><span class=\"s1\">&#39;Your name&#39;</span><span class=\"p\">)</span>\n<span class=\"gp\">... </span>    url <span class=\"o\">=</span> forms<span class=\"o\">.</span>URLField<span class=\"p\">(</span>initial<span class=\"o\">=</span><span class=\"s1\">&#39;http://&#39;</span><span class=\"p\">)</span>\n<span class=\"gp\">... </span>    comment <span class=\"o\">=</span> forms<span class=\"o\">.</span>CharField<span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>f <span class=\"o\">=</span> CommentForm<span class=\"p\">(</span>auto_id<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>f<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\">data</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=\"nc\">CommentForm</span><span class=\"p\">(</span>forms<span class=\"o\">.</span>Form<span class=\"p\">):</span>\n<span class=\"gp\">... </span>    name <span class=\"o\">=</span> forms<span class=\"o\">.</span>CharField<span class=\"p\">()</span>\n<span class=\"gp\">... </span>    url <span class=\"o\">=</span> forms<span class=\"o\">.</span>URLField<span class=\"p\">()</span>\n<span class=\"gp\">... </span>    comment <span class=\"o\">=</span> forms<span class=\"o\">.</span>CharField<span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>default_data <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>f <span class=\"o\">=</span> CommentForm<span class=\"p\">(</span>default_data<span class=\"p\">,</span> auto_id<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>f<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=\"nc\">CommentForm</span><span class=\"p\">(</span>forms<span class=\"o\">.</span>Form<span class=\"p\">):</span>\n<span class=\"gp\">... </span>    name <span class=\"o\">=</span> forms<span class=\"o\">.</span>CharField<span class=\"p\">(</span>initial<span class=\"o\">=</span><span class=\"s1\">&#39;Your name&#39;</span><span class=\"p\">)</span>\n<span class=\"gp\">... </span>    url <span class=\"o\">=</span> forms<span class=\"o\">.</span>URLField<span class=\"p\">(</span>initial<span class=\"o\">=</span><span class=\"s1\">&#39;http://&#39;</span><span class=\"p\">)</span>\n<span class=\"gp\">... </span>    comment <span class=\"o\">=</span> forms<span class=\"o\">.</span>CharField<span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>data <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>f <span class=\"o\">=</span> CommentForm<span class=\"p\">(</span>data<span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>f<span class=\"o\">.</span>is_valid<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>f<span class=\"o\">.</span>errors\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=\"nn\">datetime</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"k\">class</span> <span class=\"nc\">DateForm</span><span class=\"p\">(</span>forms<span class=\"o\">.</span>Form<span class=\"p\">):</span>\n<span class=\"gp\">... </span>    day <span class=\"o\">=</span> forms<span class=\"o\">.</span>DateField<span class=\"p\">(</span>initial<span class=\"o\">=</span>datetime<span class=\"o\">.</span>date<span class=\"o\">.</span>today<span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"nb\">print</span><span class=\"p\">(</span>DateForm<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\">widget</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\">Field.</span><span class=\"sig-name descname\">widget</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\">widget</code> permet d’indiquer une classe <code class=\"docutils literal notranslate\">Widget</code> à utiliser lors du rendu HTML de ce champ. Voir <a class=\"reference internal\" href=\"/fr/1.11/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\">help_text</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\">Field.</span><span class=\"sig-name descname\">help_text</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\">help_text</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\">Form</code> (par ex. <code class=\"docutils literal notranslate\">as_ul()</code>).</p>\n<p>Tout comme l’attribut <a class=\"reference internal\" href=\"/fr/1.11/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\">help_text</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\">help_text</code> pour deux de ses champs. Nous avons indiqué <code class=\"docutils literal notranslate\">auto_id=False</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=\"nn\">django</span> <span class=\"kn\">import</span> forms\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"k\">class</span> <span class=\"nc\">HelpTextContactForm</span><span class=\"p\">(</span>forms<span class=\"o\">.</span>Form<span class=\"p\">):</span>\n<span class=\"gp\">... </span>    subject <span class=\"o\">=</span> forms<span class=\"o\">.</span>CharField<span class=\"p\">(</span>max_length<span class=\"o\">=</span><span class=\"mi\">100</span><span class=\"p\">,</span> help_text<span class=\"o\">=</span><span class=\"s1\">&#39;100 characters max.&#39;</span><span class=\"p\">)</span>\n<span class=\"gp\">... </span>    message <span class=\"o\">=</span> forms<span class=\"o\">.</span>CharField<span class=\"p\">()</span>\n<span class=\"gp\">... </span>    sender <span class=\"o\">=</span> forms<span class=\"o\">.</span>EmailField<span class=\"p\">(</span>help_text<span class=\"o\">=</span><span class=\"s1\">&#39;A valid email address, please.&#39;</span><span class=\"p\">)</span>\n<span class=\"gp\">... </span>    cc_myself <span class=\"o\">=</span> forms<span class=\"o\">.</span>BooleanField<span class=\"p\">(</span>required<span class=\"o\">=</span><span class=\"kc\">False</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>f <span class=\"o\">=</span> HelpTextContactForm<span class=\"p\">(</span>auto_id<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>f<span class=\"o\">.</span>as_table<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>f<span class=\"o\">.</span>as_ul<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>f<span class=\"o\">.</span>as_p<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\">error_messages</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\">Field.</span><span class=\"sig-name descname\">error_messages</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\">error_messages</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=\"nn\">django</span> <span class=\"kn\">import</span> forms\n<span class=\"gp\">&gt;&gt;&gt; </span>generic <span class=\"o\">=</span> forms<span class=\"o\">.</span>CharField<span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>generic<span class=\"o\">.</span>clean<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>: [&#39;This field is required.&#39;]\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>name <span class=\"o\">=</span> forms<span class=\"o\">.</span>CharField<span class=\"p\">(</span>error_messages<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>name<span class=\"o\">.</span>clean<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>: [&#39;Please enter your name&#39;]\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\">Field</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\">validators</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\">Field.</span><span class=\"sig-name descname\">validators</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\">validators</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/1.11/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\">localize</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\">Field.</span><span class=\"sig-name descname\">localize</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\">localize</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/1.11/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\">disabled</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\">Field.</span><span class=\"sig-name descname\">disabled</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\">disabled</code>, lorsqu’il est défini à <code class=\"docutils literal notranslate\">True</code>, désactive un champ de formulaire en utilisant l’attribut HTML <code class=\"docutils literal notranslate\">disabled</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\">has_changed()</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\">Field.</span><span class=\"sig-name descname\">has_changed</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\">has_changed()</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\">True</code> ou <code class=\"docutils literal notranslate\">False</code>.</p>\n<p>Consultez la documentation de <a class=\"reference internal\" href=\"/fr/1.11/ref/forms/api/#django.forms.Form.has_changed\" title=\"django.forms.Form.has_changed\"><code class=\"xref py py-class docutils literal notranslate\">Form.has_changed()</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\">Field</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\">Field</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\">widget</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\">required</code> ci-dessus pour comprendre ce que cela signifie).</p>\n<section id=\"booleanfield\">\n<h3><code class=\"docutils literal notranslate\">BooleanField</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\">class</span> </em><span class=\"sig-name descname\">BooleanField</span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\">**</span>kwargs</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/1.11/ref/forms/widgets/#django.forms.CheckboxInput\" title=\"django.forms.CheckboxInput\"><code class=\"xref py py-class docutils literal notranslate\">CheckboxInput</code></a></p></li>\n<li><p>Valeur vide : <code class=\"docutils literal notranslate\">False</code></p></li>\n<li><p>Est normalisé en : une valeur Python <code class=\"docutils literal notranslate\">True</code> ou <code class=\"docutils literal notranslate\">False</code>.</p></li>\n<li><p>Valide que la valeur est <code class=\"docutils literal notranslate\">True</code> (signifiant par exemple que la case à cocher est cochée) si <code class=\"docutils literal notranslate\">required=True</code> pour ce champ.</p></li>\n<li><p>Clés de messages d’erreur : <code class=\"docutils literal notranslate\">required</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\">Field</code> héritent <code class=\"docutils literal notranslate\">required=True</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\">True</code> que <code class=\"docutils literal notranslate\">False</code> (par exemple une case cochée ou non), vous devez vous rappeler de passer <code class=\"docutils literal notranslate\">required=False</code> au moment de créer le champ <code class=\"docutils literal notranslate\">BooleanField</code>.</p>\n</aside>\n</dd></dl>\n\n</section>\n<section id=\"charfield\">\n<h3><code class=\"docutils literal notranslate\">CharField</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\">class</span> </em><span class=\"sig-name descname\">CharField</span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\">**</span>kwargs</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/1.11/ref/forms/widgets/#django.forms.TextInput\" title=\"django.forms.TextInput\"><code class=\"xref py py-class docutils literal notranslate\">TextInput</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\">empty_value</code></a>.</p></li>\n<li><p>Est normalisé en : un objet Unicode.</p></li>\n<li><p>Valide <code class=\"docutils literal notranslate\">max_length</code> et <code class=\"docutils literal notranslate\">min_length</code> quand ils sont présents. Sinon, toutes les valeurs saisies sont valides.</p></li>\n<li><p>Clés de messages d’erreur : <code class=\"docutils literal notranslate\">required</code>, <code class=\"docutils literal notranslate\">max_length</code>, <code class=\"docutils literal notranslate\">min_length</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\">max_length</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\">min_length</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\">strip</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\">True</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\">empty_value</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><aside class=\"version-note version-added\" data-version=\"1.11\" role=\"note\">\n<p class=\"version-note-title\">New in Django 1.11</p></aside>\n<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\">ChoiceField</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\">class</span> </em><span class=\"sig-name descname\">ChoiceField</span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\">**</span>kwargs</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/1.11/ref/forms/widgets/#django.forms.Select\" title=\"django.forms.Select\"><code class=\"xref py py-class docutils literal notranslate\">Select</code></a></p></li>\n<li><p>Valeur vide : <code class=\"docutils literal notranslate\">''</code> (une chaîne vide)</p></li>\n<li><p>Est normalisé en : un objet Unicode.</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\">required</code>, <code class=\"docutils literal notranslate\">invalid_choice</code></p></li>\n</ul>\n<p>Le message d’erreur <code class=\"docutils literal notranslate\">invalid_choice</code> peut contenir <code class=\"docutils literal notranslate\">%(value)s</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\">choices</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\">choices</code> d’un champ de modèle. Consultez la <a class=\"reference internal\" href=\"/fr/1.11/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\">TypedChoiceField</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\">class</span> </em><span class=\"sig-name descname\">TypedChoiceField</span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\">**</span>kwargs</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\">ChoiceField</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\">TypedChoiceField</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\">coerce</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\">empty_value</code></a>.</p>\n<ul class=\"simple\">\n<li><p>Composant par défaut : <a class=\"reference internal\" href=\"/fr/1.11/ref/forms/widgets/#django.forms.Select\" title=\"django.forms.Select\"><code class=\"xref py py-class docutils literal notranslate\">Select</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\">empty_value</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\">coerce</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\">required</code>, <code class=\"docutils literal notranslate\">invalid_choice</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\">coerce</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\">int</code>, <code class=\"docutils literal notranslate\">float</code>, <code class=\"docutils literal notranslate\">bool</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\">choices</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\">empty_value</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\">None</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\">coerce</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\">DateField</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\">class</span> </em><span class=\"sig-name descname\">DateField</span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\">**</span>kwargs</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/1.11/ref/forms/widgets/#django.forms.DateInput\" title=\"django.forms.DateInput\"><code class=\"xref py py-class docutils literal notranslate\">DateInput</code></a></p></li>\n<li><p>Valeur vide : <code class=\"docutils literal notranslate\">None</code></p></li>\n<li><p>Est normalisé en : un objet Python <code class=\"docutils literal notranslate\">datetime.date</code>.</p></li>\n<li><p>Valide que la valeur donnée est un objet <code class=\"docutils literal notranslate\">datetime.date</code>, <code class=\"docutils literal notranslate\">datetime.datetime</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\">required</code>, <code class=\"docutils literal notranslate\">invalid</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\">input_formats</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\">datetime.date</code> valide.</p>\n</dd></dl>\n\n<p>Si aucun paramètre <code class=\"docutils literal notranslate\">input_formats</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/1.11/ref/settings/#std-setting-USE_L10N\"><code class=\"xref std std-setting docutils literal notranslate\">USE_L10N=False</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/1.11/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\">DateTimeField</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\">class</span> </em><span class=\"sig-name descname\">DateTimeField</span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\">**</span>kwargs</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/1.11/ref/forms/widgets/#django.forms.DateTimeInput\" title=\"django.forms.DateTimeInput\"><code class=\"xref py py-class docutils literal notranslate\">DateTimeInput</code></a></p></li>\n<li><p>Valeur vide : <code class=\"docutils literal notranslate\">None</code></p></li>\n<li><p>Est normalisé en : un objet Python <code class=\"docutils literal notranslate\">datetime.datetime</code>.</p></li>\n<li><p>Valide que la valeur donnée est un objet <code class=\"docutils literal notranslate\">datetime.datetime</code>, <code class=\"docutils literal notranslate\">datetime.date</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\">required</code>, <code class=\"docutils literal notranslate\">invalid</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\">input_formats</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\">datetime.datetime</code> valide.</p>\n</dd></dl>\n\n<p>Si aucun paramètre <code class=\"docutils literal notranslate\">input_formats</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/1.11/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\">DecimalField</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\">class</span> </em><span class=\"sig-name descname\">DecimalField</span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\">**</span>kwargs</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/1.11/ref/forms/widgets/#django.forms.NumberInput\" title=\"django.forms.NumberInput\"><code class=\"xref py py-class docutils literal notranslate\">NumberInput</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\">Field.localize</code></a> vaut <code class=\"docutils literal notranslate\">False</code>, sinon <a class=\"reference internal\" href=\"/fr/1.11/ref/forms/widgets/#django.forms.TextInput\" title=\"django.forms.TextInput\"><code class=\"xref py py-class docutils literal notranslate\">TextInput</code></a>.</p></li>\n<li><p>Valeur vide : <code class=\"docutils literal notranslate\">None</code></p></li>\n<li><p>Est normalisé en : un objet Python <code class=\"docutils literal notranslate\">decimal</code>.</p></li>\n<li><p>Valide que la valeur donnée est une valeur décimale. Les espaces initiales et finales sont ignorées.</p></li>\n<li><p>Clés de messages d’erreur : <code class=\"docutils literal notranslate\">required</code>, <code class=\"docutils literal notranslate\">invalid</code>, <code class=\"docutils literal notranslate\">max_value</code>, <code class=\"docutils literal notranslate\">min_value</code>, <code class=\"docutils literal notranslate\">max_digits</code>, <code class=\"docutils literal notranslate\">max_decimal_places</code>, <code class=\"docutils literal notranslate\">max_whole_digits</code></p></li>\n</ul>\n<p>Les messages d’erreur <code class=\"docutils literal notranslate\">max_value</code> et <code class=\"docutils literal notranslate\">min_value</code> peuvent contenir <code class=\"docutils literal notranslate\">%(limit_value)s</code>, qui sera remplacé par la limite concernée. Sur le même principe, les messages d’erreur <code class=\"docutils literal notranslate\">max_digits</code>, <code class=\"docutils literal notranslate\">max_decimal_places</code> et <code class=\"docutils literal notranslate\">max_whole_digits</code> peuvent contenir <code class=\"docutils literal notranslate\">%(max)s</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\">max_value</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\">min_value</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\">decimal.Decimal</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\">max_digits</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\">decimal_places</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\">DurationField</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\">class</span> </em><span class=\"sig-name descname\">DurationField</span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\">**</span>kwargs</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/1.11/ref/forms/widgets/#django.forms.TextInput\" title=\"django.forms.TextInput\"><code class=\"xref py py-class docutils literal notranslate\">TextInput</code></a></p></li>\n<li><p>Valeur vide : <code class=\"docutils literal notranslate\">None</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\">timedelta</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\">timedelta</code>.</p></li>\n<li><p>Clés de messages d’erreur : <code class=\"docutils literal notranslate\">required</code>, <code class=\"docutils literal notranslate\">invalid</code>.</p></li>\n</ul>\n<p>Accepte tout format que <a class=\"reference internal\" href=\"/fr/1.11/ref/utils/#django.utils.dateparse.parse_duration\" title=\"django.utils.dateparse.parse_duration\"><code class=\"xref py py-func docutils literal notranslate\">parse_duration()</code></a> peut analyser.</p>\n</dd></dl>\n\n</section>\n<section id=\"emailfield\">\n<h3><code class=\"docutils literal notranslate\">EmailField</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\">class</span> </em><span class=\"sig-name descname\">EmailField</span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\">**</span>kwargs</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/1.11/ref/forms/widgets/#django.forms.EmailInput\" title=\"django.forms.EmailInput\"><code class=\"xref py py-class docutils literal notranslate\">EmailInput</code></a></p></li>\n<li><p>Valeur vide : <code class=\"docutils literal notranslate\">''</code> (une chaîne vide)</p></li>\n<li><p>Est normalisé en : un objet Unicode.</p></li>\n<li><p>Valide que la valeur donnée est une adresse électronique 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\">required</code>, <code class=\"docutils literal notranslate\">invalid</code></p></li>\n</ul>\n<p>Accepte deux paramètres facultatifs pour la validation, <code class=\"docutils literal notranslate\">max_length</code> et <code class=\"docutils literal notranslate\">min_length</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\">FileField</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\">class</span> </em><span class=\"sig-name descname\">FileField</span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\">**</span>kwargs</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/1.11/ref/forms/widgets/#django.forms.ClearableFileInput\" title=\"django.forms.ClearableFileInput\"><code class=\"xref py py-class docutils literal notranslate\">ClearableFileInput</code></a></p></li>\n<li><p>Valeur vide : <code class=\"docutils literal notranslate\">None</code></p></li>\n<li><p>Est normalisé en : un objet <code class=\"docutils literal notranslate\">UploadedFile</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\">required</code>, <code class=\"docutils literal notranslate\">invalid</code>, <code class=\"docutils literal notranslate\">missing</code>, <code class=\"docutils literal notranslate\">empty</code>, <code class=\"docutils literal notranslate\">max_length</code></p></li>\n</ul>\n<p>Accepte deux paramètres facultatifs pour la validation, <code class=\"docutils literal notranslate\">max_length</code> et <code class=\"docutils literal notranslate\">allow_empty_file</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\">UploadedFile</code>, consultez la <a class=\"reference internal\" href=\"/fr/1.11/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\">FileField</code> dans un formulaire, vous ne devez pas oublier de <a class=\"reference internal\" href=\"/fr/1.11/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\">max_length</code> porte sur la longueur du nom de fichier. Dans le message d’erreur de cette clé, <code class=\"docutils literal notranslate\">%(max)d</code> sera remplacé par la longueur maximale du nom de fichier et <code class=\"docutils literal notranslate\">%(length)d</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\">FilePathField</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\">class</span> </em><span class=\"sig-name descname\">FilePathField</span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\">**</span>kwargs</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/1.11/ref/forms/widgets/#django.forms.Select\" title=\"django.forms.Select\"><code class=\"xref py py-class docutils literal notranslate\">Select</code></a></p></li>\n<li><p>Valeur vide : <code class=\"docutils literal notranslate\">None</code></p></li>\n<li><p>Est normalisé en : un objet Unicode.</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\">required</code>, <code class=\"docutils literal notranslate\">invalid_choice</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\">path</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\">path</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\">recursive</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\">False</code> (valeur par défaut), seul le contenu au premier niveau de <code class=\"docutils literal notranslate\">path</code> sera à disposition dans les choix possibles. Si <code class=\"docutils literal notranslate\">True</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\">match</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\">allow_files</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\">True</code> ou <code class=\"docutils literal notranslate\">False</code>. La valeur par défaut est <code class=\"docutils literal notranslate\">True</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\">allow_folders</code></a>,  soit <code class=\"docutils literal notranslate\">True</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\">allow_folders</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\">True</code> ou <code class=\"docutils literal notranslate\">False</code>. La valeur par défaut est <code class=\"docutils literal notranslate\">False</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\">allow_files</code></a>,  soit <code class=\"docutils literal notranslate\">True</code>.</p>\n</dd></dl>\n\n</dd></dl>\n\n</section>\n<section id=\"floatfield\">\n<h3><code class=\"docutils literal notranslate\">FloatField</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\">class</span> </em><span class=\"sig-name descname\">FloatField</span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\">**</span>kwargs</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/1.11/ref/forms/widgets/#django.forms.NumberInput\" title=\"django.forms.NumberInput\"><code class=\"xref py py-class docutils literal notranslate\">NumberInput</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\">Field.localize</code></a> vaut <code class=\"docutils literal notranslate\">False</code>, sinon <a class=\"reference internal\" href=\"/fr/1.11/ref/forms/widgets/#django.forms.TextInput\" title=\"django.forms.TextInput\"><code class=\"xref py py-class docutils literal notranslate\">TextInput</code></a>.</p></li>\n<li><p>Valeur vide : <code class=\"docutils literal notranslate\">None</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 flottant. Les espaces initiales et finales sont permises, comme dans la fonction <code class=\"docutils literal notranslate\">float()</code> de Python.</p></li>\n<li><p>Clés de messages d’erreur : <code class=\"docutils literal notranslate\">required</code>, <code class=\"docutils literal notranslate\">invalid</code>, <code class=\"docutils literal notranslate\">max_value</code>, <code class=\"docutils literal notranslate\">min_value</code></p></li>\n</ul>\n<p>Accepte deux paramètres facultatifs pour la validation, <code class=\"docutils literal notranslate\">max_value</code> et <code class=\"docutils literal notranslate\">min_value</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\">ImageField</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\">class</span> </em><span class=\"sig-name descname\">ImageField</span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\">**</span>kwargs</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/1.11/ref/forms/widgets/#django.forms.ClearableFileInput\" title=\"django.forms.ClearableFileInput\"><code class=\"xref py py-class docutils literal notranslate\">ClearableFileInput</code></a></p></li>\n<li><p>Valeur vide : <code class=\"docutils literal notranslate\">None</code></p></li>\n<li><p>Est normalisé en : un objet <code class=\"docutils literal notranslate\">UploadedFile</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 et que le format d’image du fichier est géré par Pillow.</p></li>\n<li><p>Clés de messages d’erreur : <code class=\"docutils literal notranslate\">required</code>, <code class=\"docutils literal notranslate\">invalid</code>, <code class=\"docutils literal notranslate\">missing</code>, <code class=\"docutils literal notranslate\">empty</code>, <code class=\"docutils literal notranslate\">invalid_image</code></p></li>\n</ul>\n<p>L’emploi de <code class=\"docutils literal notranslate\">ImageField</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\">corrupt image</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\">ImageField</code> dans un formulaire, vous ne devez pas oublier de <a class=\"reference internal\" href=\"/fr/1.11/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\">UploadedFile</code> comportera un attribut supplémentaire <code class=\"docutils literal notranslate\">image</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\">UploadedFile.content_type</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\">None</code>.</p>\n</dd></dl>\n\n</section>\n<section id=\"integerfield\">\n<h3><code class=\"docutils literal notranslate\">IntegerField</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\">class</span> </em><span class=\"sig-name descname\">IntegerField</span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\">**</span>kwargs</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/1.11/ref/forms/widgets/#django.forms.NumberInput\" title=\"django.forms.NumberInput\"><code class=\"xref py py-class docutils literal notranslate\">NumberInput</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\">Field.localize</code></a> vaut <code class=\"docutils literal notranslate\">False</code>, sinon <a class=\"reference internal\" href=\"/fr/1.11/ref/forms/widgets/#django.forms.TextInput\" title=\"django.forms.TextInput\"><code class=\"xref py py-class docutils literal notranslate\">TextInput</code></a>.</p></li>\n<li><p>Valeur vide : <code class=\"docutils literal notranslate\">None</code></p></li>\n<li><p>Est normalisé en : un nombre entier Python ou un entier long.</p></li>\n<li><p>Valide que la valeur donnée est un nombre entier. Les espaces initiales et finales sont permises, comme dans la fonction <code class=\"docutils literal notranslate\">int()</code> de Python.</p></li>\n<li><p>Clés de messages d’erreur : <code class=\"docutils literal notranslate\">required</code>, <code class=\"docutils literal notranslate\">invalid</code>, <code class=\"docutils literal notranslate\">max_value</code>, <code class=\"docutils literal notranslate\">min_value</code></p></li>\n</ul>\n<p>Les messages d’erreur <code class=\"docutils literal notranslate\">max_value</code> et <code class=\"docutils literal notranslate\">min_value</code> peuvent contenir <code class=\"docutils literal notranslate\">%(limit_value)s</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\">max_value</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\">min_value</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\">GenericIPAddressField</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\">class</span> </em><span class=\"sig-name descname\">GenericIPAddressField</span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\">**</span>kwargs</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/1.11/ref/forms/widgets/#django.forms.TextInput\" title=\"django.forms.TextInput\"><code class=\"xref py py-class docutils literal notranslate\">TextInput</code></a></p></li>\n<li><p>Valeur vide : <code class=\"docutils literal notranslate\">''</code> (une chaîne vide)</p></li>\n<li><p>Est normalisé en : un objet Unicode. 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\">required</code>, <code class=\"docutils literal notranslate\">invalid</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\">::ffff:192.0.2.0</code>. Par exemple, <code class=\"docutils literal notranslate\">2001:0::0:01</code> sera normalisé en <code class=\"docutils literal notranslate\">2001::1</code> et <code class=\"docutils literal notranslate\">::ffff:0a0a:0a0a</code> en <code class=\"docutils literal notranslate\">::ffff:10.10.10.10</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\">protocol</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\">'both'</code> (les deux protocoles acceptés, valeur par défaut), <code class=\"docutils literal notranslate\">'IPv4'</code> ou <code class=\"docutils literal notranslate\">'IPv6'</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\">unpack_ipv4</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\">::ffff:192.0.2.1</code>. Si cette option est activée, cette adresse serait décodée en <code class=\"docutils literal notranslate\">192.0.2.1</code>. L’option est désactivée par défaut. Utilisable uniquement quand <code class=\"docutils literal notranslate\">protocol</code> est défini à <code class=\"docutils literal notranslate\">'both'</code>.</p>\n</dd></dl>\n\n</dd></dl>\n\n</section>\n<section id=\"multiplechoicefield\">\n<h3><code class=\"docutils literal notranslate\">MultipleChoiceField</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\">class</span> </em><span class=\"sig-name descname\">MultipleChoiceField</span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\">**</span>kwargs</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/1.11/ref/forms/widgets/#django.forms.SelectMultiple\" title=\"django.forms.SelectMultiple\"><code class=\"xref py py-class docutils literal notranslate\">SelectMultiple</code></a></p></li>\n<li><p>Valeur vide : <code class=\"docutils literal notranslate\">[]</code> (une liste vide)</p></li>\n<li><p>Est normalisé en : une liste d’objets Unicode.</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\">required</code>, <code class=\"docutils literal notranslate\">invalid_choice</code>, <code class=\"docutils literal notranslate\">invalid_list</code></p></li>\n</ul>\n<p>Le message d’erreur <code class=\"docutils literal notranslate\">invalid_choice</code> peut contenir <code class=\"docutils literal notranslate\">%(value)s</code>, qui sera remplacé par le choix sélectionné.</p>\n<p>Requiert un paramètre supplémentaire obligatoire, <code class=\"docutils literal notranslate\">choices</code>, comme pour <a class=\"reference internal\" href=\"#django.forms.ChoiceField\" title=\"django.forms.ChoiceField\"><code class=\"xref py py-class docutils literal notranslate\">ChoiceField</code></a>.</p>\n</dd></dl>\n\n</section>\n<section id=\"typedmultiplechoicefield\">\n<h3><code class=\"docutils literal notranslate\">TypedMultipleChoiceField</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\">class</span> </em><span class=\"sig-name descname\">TypedMultipleChoiceField</span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\">**</span>kwargs</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\">MultipleChoiceField</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\">TypedMultipleChoiceField</code></a> accepte deux paramètres supplémentaires, <code class=\"docutils literal notranslate\">coerce</code> et <code class=\"docutils literal notranslate\">empty_value</code>.</p>\n<ul class=\"simple\">\n<li><p>Composant par défaut : <a class=\"reference internal\" href=\"/fr/1.11/ref/forms/widgets/#django.forms.SelectMultiple\" title=\"django.forms.SelectMultiple\"><code class=\"xref py py-class docutils literal notranslate\">SelectMultiple</code></a></p></li>\n<li><p>Valeur vide : ce qui a été indiqué dans <code class=\"docutils literal notranslate\">empty_value</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\">coerce</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\">required</code>, <code class=\"docutils literal notranslate\">invalid_choice</code></p></li>\n</ul>\n<p>Le message d’erreur <code class=\"docutils literal notranslate\">invalid_choice</code> peut contenir <code class=\"docutils literal notranslate\">%(value)s</code>, qui sera remplacé par le choix sélectionné.</p>\n<p>Accepte deux paramètres supplémentaires, <code class=\"docutils literal notranslate\">coerce</code> et <code class=\"docutils literal notranslate\">empty_value</code>, comme pour <a class=\"reference internal\" href=\"#django.forms.TypedChoiceField\" title=\"django.forms.TypedChoiceField\"><code class=\"xref py py-class docutils literal notranslate\">TypedChoiceField</code></a>.</p>\n</dd></dl>\n\n</section>\n<section id=\"nullbooleanfield\">\n<h3><code class=\"docutils literal notranslate\">NullBooleanField</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\">class</span> </em><span class=\"sig-name descname\">NullBooleanField</span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\">**</span>kwargs</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/1.11/ref/forms/widgets/#django.forms.NullBooleanSelect\" title=\"django.forms.NullBooleanSelect\"><code class=\"xref py py-class docutils literal notranslate\">NullBooleanSelect</code></a></p></li>\n<li><p>Valeur vide : <code class=\"docutils literal notranslate\">None</code></p></li>\n<li><p>Est normalisé en : une valeur Python <code class=\"docutils literal notranslate\">True</code>, <code class=\"docutils literal notranslate\">False</code> ou <code class=\"docutils literal notranslate\">None</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\">ValidationError</code>).</p></li>\n</ul>\n</dd></dl>\n\n</section>\n<section id=\"regexfield\">\n<h3><code class=\"docutils literal notranslate\">RegexField</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\">class</span> </em><span class=\"sig-name descname\">RegexField</span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\">**</span>kwargs</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/1.11/ref/forms/widgets/#django.forms.TextInput\" title=\"django.forms.TextInput\"><code class=\"xref py py-class docutils literal notranslate\">TextInput</code></a></p></li>\n<li><p>Valeur vide : <code class=\"docutils literal notranslate\">''</code> (une chaîne vide)</p></li>\n<li><p>Est normalisé en : un objet Unicode.</p></li>\n<li><p>Valide 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\">required</code>, <code class=\"docutils literal notranslate\">invalid</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\">regex</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\">max_length</code>, <code class=\"docutils literal notranslate\">min_length</code> et <code class=\"docutils literal notranslate\">strip</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\">CharField</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\">strip</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\">False</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\">SlugField</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\">class</span> </em><span class=\"sig-name descname\">SlugField</span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\">**</span>kwargs</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/1.11/ref/forms/widgets/#django.forms.TextInput\" title=\"django.forms.TextInput\"><code class=\"xref py py-class docutils literal notranslate\">TextInput</code></a></p></li>\n<li><p>Valeur vide : <code class=\"docutils literal notranslate\">''</code> (une chaîne vide)</p></li>\n<li><p>Est normalisé en : un objet Unicode.</p></li>\n<li><p>Valide que la valeur donnée ne contient que des lettres, des chiffres, des soulignements ou des tirets.</p></li>\n<li><p>Clés de messages d’erreur : <code class=\"docutils literal notranslate\">required</code>, <code class=\"docutils literal notranslate\">invalid</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/1.11/ref/models/fields/#django.db.models.SlugField\" title=\"django.db.models.SlugField\"><code class=\"xref py py-class docutils literal notranslate\">SlugField</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\">allow_unicode</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\">False</code>.</p>\n</dd></dl>\n\n</dd></dl>\n\n</section>\n<section id=\"timefield\">\n<h3><code class=\"docutils literal notranslate\">TimeField</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\">class</span> </em><span class=\"sig-name descname\">TimeField</span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\">**</span>kwargs</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/1.11/ref/forms/widgets/#django.forms.TextInput\" title=\"django.forms.TextInput\"><code class=\"xref py py-class docutils literal notranslate\">TextInput</code></a></p></li>\n<li><p>Valeur vide : <code class=\"docutils literal notranslate\">None</code></p></li>\n<li><p>Est normalisé en : un objet Python <code class=\"docutils literal notranslate\">datetime.time</code>.</p></li>\n<li><p>Valide que la valeur donnée est un objet <code class=\"docutils literal notranslate\">datetime.time</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\">required</code>, <code class=\"docutils literal notranslate\">invalid</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\">input_formats</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\">datetime.time</code> valide.</p>\n</dd></dl>\n\n<p>Si aucun paramètre <code class=\"docutils literal notranslate\">input_formats</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\">URLField</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\">class</span> </em><span class=\"sig-name descname\">URLField</span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\">**</span>kwargs</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/1.11/ref/forms/widgets/#django.forms.URLInput\" title=\"django.forms.URLInput\"><code class=\"xref py py-class docutils literal notranslate\">URLInput</code></a></p></li>\n<li><p>Valeur vide : <code class=\"docutils literal notranslate\">''</code> (une chaîne vide)</p></li>\n<li><p>Est normalisé en : un objet Unicode.</p></li>\n<li><p>Valide 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\">required</code>, <code class=\"docutils literal notranslate\">invalid</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\">max_length</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\">min_length</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\">CharField.max_length</code> et <code class=\"docutils literal notranslate\">CharField.min_length</code>.</p>\n</dd></dl>\n\n</section>\n<section id=\"uuidfield\">\n<h3><code class=\"docutils literal notranslate\">UUIDField</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\">class</span> </em><span class=\"sig-name descname\">UUIDField</span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\">**</span>kwargs</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/1.11/ref/forms/widgets/#django.forms.TextInput\" title=\"django.forms.TextInput\"><code class=\"xref py py-class docutils literal notranslate\">TextInput</code></a></p></li>\n<li><p>Valeur vide : <code class=\"docutils literal notranslate\">''</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\">UUID</code></a>.</p></li>\n<li><p>Clés de messages d’erreur : <code class=\"docutils literal notranslate\">required</code>, <code class=\"docutils literal notranslate\">invalid</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\">hex</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\">UUID</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\">Field</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\">ComboField</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\">class</span> </em><span class=\"sig-name descname\">ComboField</span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\">**</span>kwargs</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/1.11/ref/forms/widgets/#django.forms.TextInput\" title=\"django.forms.TextInput\"><code class=\"xref py py-class docutils literal notranslate\">TextInput</code></a></p></li>\n<li><p>Valeur vide : <code class=\"docutils literal notranslate\">''</code> (une chaîne vide)</p></li>\n<li><p>Est normalisé en : un objet Unicode.</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\">ComboField</code>.</p></li>\n<li><p>Clés de messages d’erreur : <code class=\"docutils literal notranslate\">required</code>, <code class=\"docutils literal notranslate\">invalid</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\">fields</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=\"nn\">django.forms</span> <span class=\"kn\">import</span> ComboField\n<span class=\"gp\">&gt;&gt;&gt; </span>f <span class=\"o\">=</span> ComboField<span class=\"p\">(</span>fields<span class=\"o\">=</span><span class=\"p\">[</span>CharField<span class=\"p\">(</span>max_length<span class=\"o\">=</span><span class=\"mi\">20</span><span class=\"p\">),</span> EmailField<span class=\"p\">()])</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>f<span class=\"o\">.</span>clean<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>f<span class=\"o\">.</span>clean<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>: [&#39;Ensure this value has at most 20 characters (it has 28).&#39;]\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\">MultiValueField</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\">class</span> </em><span class=\"sig-name descname\">MultiValueField</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">fields<span class=\"o\">=</span><span class=\"default_value\">()</span></em>, <em class=\"sig-param\"><span class=\"o\">**</span>kwargs</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/1.11/ref/forms/widgets/#django.forms.TextInput\" title=\"django.forms.TextInput\"><code class=\"xref py py-class docutils literal notranslate\">TextInput</code></a></p></li>\n<li><p>Valeur vide : <code class=\"docutils literal notranslate\">''</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\">compress</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\">MultiValueField</code>.</p></li>\n<li><p>Clés de messages d’erreur : <code class=\"docutils literal notranslate\">required</code>, <code class=\"docutils literal notranslate\">invalid</code>, <code class=\"docutils literal notranslate\">incomplete</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\">MultiValueField</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\">clean()</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\">compress()</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\">fields</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\">fields</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\">compress()</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\">require_all_fields</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\">True</code>, auquel cas une erreur de validation <code class=\"docutils literal notranslate\">required</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\">False</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\">Field.required</code></a> peut être défini à <code class=\"docutils literal notranslate\">False</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\">incomplete</code> est générée.</p>\n<p>Un message d’erreur <code class=\"docutils literal notranslate\">incomplete</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\">MultiValueField</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=\"nn\">django.core.validators</span> <span class=\"kn\">import</span> RegexValidator\n\n<span class=\"k\">class</span> <span class=\"nc\">PhoneField</span><span class=\"p\">(</span>MultiValueField<span class=\"p\">):</span>\n    <span class=\"k\">def</span> <span class=\"fm\">__init__</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> <span class=\"o\">*</span>args<span class=\"p\">,</span> <span class=\"o\">**</span>kwargs<span class=\"p\">):</span>\n        <span class=\"c1\"># Define one message for all fields.</span>\n        error_messages <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        fields <span class=\"o\">=</span> <span class=\"p\">(</span>\n            CharField<span class=\"p\">(</span>\n                error_messages<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                validators<span class=\"o\">=</span><span class=\"p\">[</span>\n                    RegexValidator<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            CharField<span class=\"p\">(</span>\n                error_messages<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                validators<span class=\"o\">=</span><span class=\"p\">[</span>RegexValidator<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            CharField<span class=\"p\">(</span>\n                validators<span class=\"o\">=</span><span class=\"p\">[</span>RegexValidator<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                required<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>PhoneField<span class=\"p\">,</span> <span class=\"bp\">self</span><span class=\"p\">)</span><span class=\"o\">.</span><span class=\"fm\">__init__</span><span class=\"p\">(</span>\n            error_messages<span class=\"o\">=</span>error_messages<span class=\"p\">,</span> fields<span class=\"o\">=</span>fields<span class=\"p\">,</span>\n            require_all_fields<span class=\"o\">=</span><span class=\"kc\">False</span><span class=\"p\">,</span> <span class=\"o\">*</span>args<span class=\"p\">,</span> <span class=\"o\">**</span>kwargs\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\">widget</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/1.11/ref/forms/widgets/#django.forms.MultiWidget\" title=\"django.forms.MultiWidget\"><code class=\"xref py py-class docutils literal notranslate\">django.forms.MultiWidget</code></a>. La valeur par défaut est <a class=\"reference internal\" href=\"/fr/1.11/ref/forms/widgets/#django.forms.TextInput\" title=\"django.forms.TextInput\"><code class=\"xref py py-class docutils literal notranslate\">TextInput</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\">compress</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">data_list</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\">SplitDateTimeField</code></a> est une sous-classe qui combine un champ heure et un champ date en un seul objet <code class=\"docutils literal notranslate\">datetime</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\">SplitDateTimeField</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\">class</span> </em><span class=\"sig-name descname\">SplitDateTimeField</span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\">**</span>kwargs</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/1.11/ref/forms/widgets/#django.forms.SplitDateTimeWidget\" title=\"django.forms.SplitDateTimeWidget\"><code class=\"xref py py-class docutils literal notranslate\">SplitDateTimeWidget</code></a></p></li>\n<li><p>Valeur vide : <code class=\"docutils literal notranslate\">None</code></p></li>\n<li><p>Est normalisé en : un objet Python <code class=\"docutils literal notranslate\">datetime.datetime</code>.</p></li>\n<li><p>Valide que la valeur donnée est un objet <code class=\"docutils literal notranslate\">datetime.datetime</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\">required</code>, <code class=\"docutils literal notranslate\">invalid</code>, <code class=\"docutils literal notranslate\">invalid_date</code>, <code class=\"docutils literal notranslate\">invalid_time</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\">input_date_formats</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\">datetime.date</code> valide.</p>\n</dd></dl>\n\n<p>Si aucun paramètre <code class=\"docutils literal notranslate\">input_date_formats</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\">DateField</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\">input_time_formats</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\">datetime.time</code> valide.</p>\n</dd></dl>\n\n<p>Si aucun paramètre <code class=\"docutils literal notranslate\">input_time_formats</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\">TimeField</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\">ModelChoiceField</code></a> and <a class=\"reference internal\" href=\"#django.forms.ModelMultipleChoiceField\" title=\"django.forms.ModelMultipleChoiceField\"><code class=\"xref py py-class docutils literal notranslate\">ModelMultipleChoiceField</code></a>. Ces deux champs exigent un seul paramètre <code class=\"docutils literal notranslate\">queryset</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\">ModelChoiceField</code>), soit plusieurs objets de modèle (dans le cas de <code class=\"docutils literal notranslate\">ModelMultipleChoiceField</code>) dans le dictionnaire <code class=\"docutils literal notranslate\">cleaned_data</code> du formulaire.</p>\n<p>Pour des usages plus complexes, il est possible d’indiquer <code class=\"docutils literal notranslate\">queryset=None</code> au moment de déclarer le champ de formulaire, puis de remplir <code class=\"docutils literal notranslate\">queryset</code> dans la méthode <code class=\"docutils literal notranslate\">__init__()</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=\"nc\">FooMultipleChoiceForm</span><span class=\"p\">(</span>forms<span class=\"o\">.</span>Form<span class=\"p\">):</span>\n    foo_select <span class=\"o\">=</span> forms<span class=\"o\">.</span>ModelMultipleChoiceField<span class=\"p\">(</span>queryset<span class=\"o\">=</span><span class=\"kc\">None</span><span class=\"p\">)</span>\n\n    <span class=\"k\">def</span> <span class=\"fm\">__init__</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> <span class=\"o\">*</span>args<span class=\"p\">,</span> <span class=\"o\">**</span>kwargs<span class=\"p\">):</span>\n        <span class=\"nb\">super</span><span class=\"p\">(</span>FooMultipleChoiceForm<span class=\"p\">,</span> <span class=\"bp\">self</span><span class=\"p\">)</span><span class=\"o\">.</span><span class=\"fm\">__init__</span><span class=\"p\">(</span><span class=\"o\">*</span>args<span class=\"p\">,</span> <span class=\"o\">**</span>kwargs<span class=\"p\">)</span>\n        <span class=\"bp\">self</span><span class=\"o\">.</span>fields<span class=\"p\">[</span><span class=\"s1\">&#39;foo_select&#39;</span><span class=\"p\">]</span><span class=\"o\">.</span>queryset <span class=\"o\">=</span> <span class=\"o\">...</span>\n</code></pre></div>\n<section id=\"modelchoicefield\">\n<h3><code class=\"docutils literal notranslate\">ModelChoiceField</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\">class</span> </em><span class=\"sig-name descname\">ModelChoiceField</span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\">**</span>kwargs</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/1.11/ref/forms/widgets/#django.forms.Select\" title=\"django.forms.Select\"><code class=\"xref py py-class docutils literal notranslate\">Select</code></a></p></li>\n<li><p>Valeur vide : <code class=\"docutils literal notranslate\">None</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\">required</code>, <code class=\"docutils literal notranslate\">invalid_choice</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\">ModelChoiceField</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\">queryset</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\">QuerySet</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\">ModelChoiceField</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\">empty_label</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\">&lt;select&gt;</code> utilisé par <code class=\"docutils literal notranslate\">ModelChoiceField</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\">&quot;---------&quot;</code> par défaut) au moyen de l’attribut <code class=\"docutils literal notranslate\">empty_label</code>, ou même désactiver complètement le choix vide en définissant <code class=\"docutils literal notranslate\">empty_label</code> à <code class=\"docutils literal notranslate\">None</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>\nfield1 <span class=\"o\">=</span> forms<span class=\"o\">.</span>ModelChoiceField<span class=\"p\">(</span>queryset<span class=\"o\">=...</span><span class=\"p\">,</span> empty_label<span class=\"o\">=</span><span class=\"s2\">&quot;(Nothing)&quot;</span><span class=\"p\">)</span>\n\n<span class=\"c1\"># No empty label</span>\nfield2 <span class=\"o\">=</span> forms<span class=\"o\">.</span>ModelChoiceField<span class=\"p\">(</span>queryset<span class=\"o\">=...</span><span class=\"p\">,</span> empty_label<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\">ModelChoiceField</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\">empty_label</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\">to_field_name</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\">None</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>\nfield1 <span class=\"o\">=</span> forms<span class=\"o\">.</span>ModelChoiceField<span class=\"p\">(</span>queryset<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>\nfield2 <span class=\"o\">=</span> forms<span class=\"o\">.</span>ModelChoiceField<span class=\"p\">(</span>queryset<span class=\"o\">=...</span><span class=\"p\">,</span> to_field_name<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\">__str__</code> (<code class=\"docutils literal notranslate\">__unicode__</code> avec Python 2) 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\">ModelChoiceField</code> et surchargez <code class=\"docutils literal notranslate\">label_from_instance</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=\"nn\">django.forms</span> <span class=\"kn\">import</span> ModelChoiceField\n\n<span class=\"k\">class</span> <span class=\"nc\">MyModelChoiceField</span><span class=\"p\">(</span>ModelChoiceField<span class=\"p\">):</span>\n    <span class=\"k\">def</span> <span class=\"nf\">label_from_instance</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> obj<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> obj<span class=\"o\">.</span>id\n</code></pre></div>\n</dd></dl>\n\n</section>\n<section id=\"modelmultiplechoicefield\">\n<h3><code class=\"docutils literal notranslate\">ModelMultipleChoiceField</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\">class</span> </em><span class=\"sig-name descname\">ModelMultipleChoiceField</span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\">**</span>kwargs</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/1.11/ref/forms/widgets/#django.forms.SelectMultiple\" title=\"django.forms.SelectMultiple\"><code class=\"xref py py-class docutils literal notranslate\">SelectMultiple</code></a></p></li>\n<li><p>Valeur vide : un <code class=\"docutils literal notranslate\">QuerySet</code> vide (self.queryset.none())</p></li>\n<li><p>Est normalisé en : un <code class=\"docutils literal notranslate\">QuerySet</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\">required</code>, <code class=\"docutils literal notranslate\">list</code>, <code class=\"docutils literal notranslate\">invalid_choice</code>, <code class=\"docutils literal notranslate\">invalid_pk_value</code></p></li>\n</ul>\n<p>Le message d’erreur <code class=\"docutils literal notranslate\">invalid_choice</code> peut contenir <code class=\"docutils literal notranslate\">%(value)s</code> et le message <code class=\"docutils literal notranslate\">invalid_pk_value</code> peut contenir <code class=\"docutils literal notranslate\">%(pk)s</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\">ModelChoiceField</code></a>, vous pouvez utiliser <code class=\"docutils literal notranslate\">label_from_instance</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\">queryset</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\">ModelChoiceField.queryset</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\">to_field_name</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\">ModelChoiceField.to_field_name</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\">Field</code> intégrées ne correspondent pas à vos besoins, vous pouvez facilement créer des classes <code class=\"docutils literal notranslate\">Field</code> personnalisées. Pour cela, il suffit de créer une sous-classe de <code class=\"docutils literal notranslate\">django.forms.Field</code>. Les seules exigences sont que la méthode <code class=\"docutils literal notranslate\">clean()</code> doit être implémentée et que la méthode <code class=\"docutils literal notranslate\">__init__()</code> accepte les paramètres de base mentionnés plus haut (<code class=\"docutils literal notranslate\">required</code>, <code class=\"docutils literal notranslate\">label</code>, <code class=\"docutils literal notranslate\">initial</code>, <code class=\"docutils literal notranslate\">widget</code>, <code class=\"docutils literal notranslate\">help_text</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/1.11/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\">get_bound_field()</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/1.11/ref/"},{"docname":"ref/forms/index","title":"Formulaires","url":"/fr/1.11/ref/forms/"}],"prev":{"docname":"ref/forms/api","title":"L’API des formulaires","url":"/fr/1.11/ref/forms/api/"},"next":{"docname":"ref/forms/models","title":"Fonctions de formulaires de modèles","url":"/fr/1.11/ref/forms/models/"},"formats":{"html":"/fr/1.11/ref/forms/fields/","markdown":"/fr/1.11/ref/forms/fields.md","json":"/fr/1.11/ref/forms/fields.json"},"source":"https://github.com/django/django/blob/stable/1.11.x/docs/ref/forms/fields.txt","official":"https://docs.djangoproject.com/fr/1.11/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","fr","ja","id","pt-br","ko","es","el","pl"]}