{"title":"Champs et composants de formulaires spécifiques à PostgreSQL","version":"6.0","locale":"fr","docname":"ref/contrib/postgres/forms","url":"/fr/6.0/ref/contrib/postgres/forms/","canonical":"https://djangodocs.dev/fr/6.0/ref/contrib/postgres/forms/","summary":"Tous ces champs et composants sont disponibles dans le module django.contrib.postgres.forms . Champs Lien vers cette rubrique # SimpleArrayField Lien vers cette…","html":"<h1>Champs et composants de formulaires spécifiques à PostgreSQL<a class=\"heading-anchor\" href=\"#postgresql-specific-form-fields-and-widgets\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h1>\n<p>Tous ces champs et composants sont disponibles dans le module <code class=\"docutils literal notranslate\"><span class=\"pre\">django.contrib.postgres.forms</span></code>.</p>\n<section id=\"fields\">\n<h2>Champs<a class=\"heading-anchor\" href=\"#fields\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h2>\n<section id=\"simplearrayfield\">\n<h3><code class=\"docutils literal notranslate\"><span class=\"pre\">SimpleArrayField</span></code><a class=\"heading-anchor\" href=\"#simplearrayfield\"><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.contrib.postgres.forms.SimpleArrayField\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">SimpleArrayField</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">base_field</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">delimiter</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">','</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">max_length</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">min_length</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.postgres.forms.SimpleArrayField\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Un champ qui correspond à un tableau. Il est représenté par un élément HTML <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;input&gt;</span></code>.</p>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.postgres.forms.SimpleArrayField.base_field\">\n<span class=\"sig-name descname\"><span class=\"pre\">base_field</span></span><a class=\"heading-anchor\" href=\"#django.contrib.postgres.forms.SimpleArrayField.base_field\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Ce paramètre est obligatoire.</p>\n<p>Il définit le champ de formulaire de base du tableau. Ceci n’est pas utilisé pour produire du code HTML, mais pour traiter les données envoyées et les valider. Par exemple :</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</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=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">forms</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.contrib.postgres.forms</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">SimpleArrayField</span>\n\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">NumberListForm</span><span class=\"p\">(</span><span class=\"n\">forms</span><span class=\"o\">.</span><span class=\"n\">Form</span><span class=\"p\">):</span>\n<span class=\"gp\">... </span>    <span class=\"n\">numbers</span> <span class=\"o\">=</span> <span class=\"n\">SimpleArrayField</span><span class=\"p\">(</span><span class=\"n\">forms</span><span class=\"o\">.</span><span class=\"n\">IntegerField</span><span class=\"p\">())</span>\n<span class=\"gp\">...</span>\n\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">form</span> <span class=\"o\">=</span> <span class=\"n\">NumberListForm</span><span class=\"p\">({</span><span class=\"s2\">&quot;numbers&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;1,2,3&quot;</span><span class=\"p\">})</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">form</span><span class=\"o\">.</span><span class=\"n\">is_valid</span><span class=\"p\">()</span>\n<span class=\"go\">True</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">form</span><span class=\"o\">.</span><span class=\"n\">cleaned_data</span>\n<span class=\"go\">{&#39;numbers&#39;: [1, 2, 3]}</span>\n\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">form</span> <span class=\"o\">=</span> <span class=\"n\">NumberListForm</span><span class=\"p\">({</span><span class=\"s2\">&quot;numbers&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;1,2,a&quot;</span><span class=\"p\">})</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">form</span><span class=\"o\">.</span><span class=\"n\">is_valid</span><span class=\"p\">()</span>\n<span class=\"go\">False</span>\n</code></pre></div>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.postgres.forms.SimpleArrayField.delimiter\">\n<span class=\"sig-name descname\"><span class=\"pre\">delimiter</span></span><a class=\"heading-anchor\" href=\"#django.contrib.postgres.forms.SimpleArrayField.delimiter\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Il s’agit d’un paramètre facultatif dont la valeur par défaut est une virgule : <code class=\"docutils literal notranslate\"><span class=\"pre\">,</span></code>. Cette valeur est utilisée pour séparer les données envoyées. Elle permet d’enchaîner des champs <code class=\"docutils literal notranslate\"><span class=\"pre\">SimpleArrayField</span></code> pour des données à plusieurs dimensions :</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</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=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">forms</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.contrib.postgres.forms</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">SimpleArrayField</span>\n\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">GridForm</span><span class=\"p\">(</span><span class=\"n\">forms</span><span class=\"o\">.</span><span class=\"n\">Form</span><span class=\"p\">):</span>\n<span class=\"gp\">... </span>    <span class=\"n\">places</span> <span class=\"o\">=</span> <span class=\"n\">SimpleArrayField</span><span class=\"p\">(</span><span class=\"n\">SimpleArrayField</span><span class=\"p\">(</span><span class=\"n\">IntegerField</span><span class=\"p\">()),</span> <span class=\"n\">delimiter</span><span class=\"o\">=</span><span class=\"s2\">&quot;|&quot;</span><span class=\"p\">)</span>\n<span class=\"gp\">...</span>\n\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">form</span> <span class=\"o\">=</span> <span class=\"n\">GridForm</span><span class=\"p\">({</span><span class=\"s2\">&quot;places&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;1,2|2,1|4,3&quot;</span><span class=\"p\">})</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">form</span><span class=\"o\">.</span><span class=\"n\">is_valid</span><span class=\"p\">()</span>\n<span class=\"go\">True</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">form</span><span class=\"o\">.</span><span class=\"n\">cleaned_data</span>\n<span class=\"go\">{&#39;places&#39;: [[1, 2], [2, 1], [4, 3]]}</span>\n</code></pre></div>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">Note</p>\n<p>Le champ ne permet pas d’échapper le caractère de délimitation, soyez donc prudent dans les cas où le délimiteur est un caractère valable du champ sous-jacent. Le délimiteur ne doit pas forcément se limiter à un seul caractère.</p>\n</aside>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.postgres.forms.SimpleArrayField.max_length\">\n<span class=\"sig-name descname\"><span class=\"pre\">max_length</span></span><a class=\"heading-anchor\" href=\"#django.contrib.postgres.forms.SimpleArrayField.max_length\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>C’est un paramètre facultatif qui valide que le tableau ne dépasse pas la longueur indiquée.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.postgres.forms.SimpleArrayField.min_length\">\n<span class=\"sig-name descname\"><span class=\"pre\">min_length</span></span><a class=\"heading-anchor\" href=\"#django.contrib.postgres.forms.SimpleArrayField.min_length\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>C’est un paramètre facultatif qui valide que le tableau atteint au moins la longueur indiquée.</p>\n</dd></dl>\n\n<aside class=\"admonition-user-friendly-forms admonition\">\n<p class=\"admonition-title\">Formulaires conviviaux</p>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">SimpleArrayField</span></code> n’est pas particulièrement convivial dans la plupart des cas, mais il s’agit toutefois d’une manière utile de mettre en forme des données à partir d’un composant client pour les envoyer vers le serveur.</p>\n</aside>\n</dd></dl>\n\n</section>\n<section id=\"splitarrayfield\">\n<h3><code class=\"docutils literal notranslate\"><span class=\"pre\">SplitArrayField</span></code><a class=\"heading-anchor\" href=\"#splitarrayfield\"><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.contrib.postgres.forms.SplitArrayField\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">SplitArrayField</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">base_field</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">size</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">remove_trailing_nulls</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">False</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.postgres.forms.SplitArrayField\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Ce champ se charge des tableaux en reproduisant le champ de base un nombre défini de fois.</p>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.postgres.forms.SplitArrayField.base_field\">\n<span class=\"sig-name descname\"><span class=\"pre\">base_field</span></span><a class=\"heading-anchor\" href=\"#django.contrib.postgres.forms.SplitArrayField.base_field\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Il s’agit d’un paramètre obligatoire. Il définit le champ de formulaire à répéter.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.postgres.forms.SplitArrayField.size\">\n<span class=\"sig-name descname\"><span class=\"pre\">size</span></span><a class=\"heading-anchor\" href=\"#django.contrib.postgres.forms.SplitArrayField.size\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Le nombre de fois que le champ de base va être utilisé.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.postgres.forms.SplitArrayField.remove_trailing_nulls\">\n<span class=\"sig-name descname\"><span class=\"pre\">remove_trailing_nulls</span></span><a class=\"heading-anchor\" href=\"#django.contrib.postgres.forms.SplitArrayField.remove_trailing_nulls\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Par défaut, cette valeur vaut <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code>. Dans ce cas, chaque valeur des champs répétés est stockée. Quand la valeur vaut <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code>, toute valeur en fin de tableau qui reste vierge est supprimée du résultat. Si le champ de base possède <code class=\"docutils literal notranslate\"><span class=\"pre\">required=True</span></code> mais que <code class=\"docutils literal notranslate\"><span class=\"pre\">remove_trailing_nulls</span></code> vaut <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code>, les valeurs nulles ne sont permises qu’à la fin et elles seront ignorées.</p>\n<p>Quelques exemples :</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=\"n\">SplitArrayField</span><span class=\"p\">(</span><span class=\"n\">IntegerField</span><span class=\"p\">(</span><span class=\"n\">required</span><span class=\"o\">=</span><span class=\"kc\">True</span><span class=\"p\">),</span> <span class=\"n\">size</span><span class=\"o\">=</span><span class=\"mi\">3</span><span class=\"p\">,</span> <span class=\"n\">remove_trailing_nulls</span><span class=\"o\">=</span><span class=\"kc\">False</span><span class=\"p\">)</span>\n\n<span class=\"p\">[</span><span class=\"s2\">&quot;1&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;2&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;3&quot;</span><span class=\"p\">]</span>  <span class=\"c1\"># -&gt; [1, 2, 3]</span>\n<span class=\"p\">[</span><span class=\"s2\">&quot;1&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;2&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;&quot;</span><span class=\"p\">]</span>  <span class=\"c1\"># -&gt; ValidationError - third entry required.</span>\n<span class=\"p\">[</span><span class=\"s2\">&quot;1&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;3&quot;</span><span class=\"p\">]</span>  <span class=\"c1\"># -&gt; ValidationError - second entry required.</span>\n<span class=\"p\">[</span><span class=\"s2\">&quot;&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;2&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;&quot;</span><span class=\"p\">]</span>  <span class=\"c1\"># -&gt; ValidationError - first and third entries required.</span>\n\n<span class=\"n\">SplitArrayField</span><span class=\"p\">(</span><span class=\"n\">IntegerField</span><span class=\"p\">(</span><span class=\"n\">required</span><span class=\"o\">=</span><span class=\"kc\">False</span><span class=\"p\">),</span> <span class=\"n\">size</span><span class=\"o\">=</span><span class=\"mi\">3</span><span class=\"p\">,</span> <span class=\"n\">remove_trailing_nulls</span><span class=\"o\">=</span><span class=\"kc\">False</span><span class=\"p\">)</span>\n\n<span class=\"p\">[</span><span class=\"s2\">&quot;1&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;2&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;3&quot;</span><span class=\"p\">]</span>  <span class=\"c1\"># -&gt; [1, 2, 3]</span>\n<span class=\"p\">[</span><span class=\"s2\">&quot;1&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;2&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;&quot;</span><span class=\"p\">]</span>  <span class=\"c1\"># -&gt; [1, 2, None]</span>\n<span class=\"p\">[</span><span class=\"s2\">&quot;1&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;3&quot;</span><span class=\"p\">]</span>  <span class=\"c1\"># -&gt; [1, None, 3]</span>\n<span class=\"p\">[</span><span class=\"s2\">&quot;&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;2&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;&quot;</span><span class=\"p\">]</span>  <span class=\"c1\"># -&gt; [None, 2, None]</span>\n\n<span class=\"n\">SplitArrayField</span><span class=\"p\">(</span><span class=\"n\">IntegerField</span><span class=\"p\">(</span><span class=\"n\">required</span><span class=\"o\">=</span><span class=\"kc\">True</span><span class=\"p\">),</span> <span class=\"n\">size</span><span class=\"o\">=</span><span class=\"mi\">3</span><span class=\"p\">,</span> <span class=\"n\">remove_trailing_nulls</span><span class=\"o\">=</span><span class=\"kc\">True</span><span class=\"p\">)</span>\n\n<span class=\"p\">[</span><span class=\"s2\">&quot;1&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;2&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;3&quot;</span><span class=\"p\">]</span>  <span class=\"c1\"># -&gt; [1, 2, 3]</span>\n<span class=\"p\">[</span><span class=\"s2\">&quot;1&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;2&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;&quot;</span><span class=\"p\">]</span>  <span class=\"c1\"># -&gt; [1, 2]</span>\n<span class=\"p\">[</span><span class=\"s2\">&quot;1&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;3&quot;</span><span class=\"p\">]</span>  <span class=\"c1\"># -&gt; ValidationError - second entry required.</span>\n<span class=\"p\">[</span><span class=\"s2\">&quot;&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;2&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;&quot;</span><span class=\"p\">]</span>  <span class=\"c1\"># -&gt; ValidationError - first entry required.</span>\n\n<span class=\"n\">SplitArrayField</span><span class=\"p\">(</span><span class=\"n\">IntegerField</span><span class=\"p\">(</span><span class=\"n\">required</span><span class=\"o\">=</span><span class=\"kc\">False</span><span class=\"p\">),</span> <span class=\"n\">size</span><span class=\"o\">=</span><span class=\"mi\">3</span><span class=\"p\">,</span> <span class=\"n\">remove_trailing_nulls</span><span class=\"o\">=</span><span class=\"kc\">True</span><span class=\"p\">)</span>\n\n<span class=\"p\">[</span><span class=\"s2\">&quot;1&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;2&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;3&quot;</span><span class=\"p\">]</span>  <span class=\"c1\"># -&gt; [1, 2, 3]</span>\n<span class=\"p\">[</span><span class=\"s2\">&quot;1&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;2&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;&quot;</span><span class=\"p\">]</span>  <span class=\"c1\"># -&gt; [1, 2]</span>\n<span class=\"p\">[</span><span class=\"s2\">&quot;1&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;3&quot;</span><span class=\"p\">]</span>  <span class=\"c1\"># -&gt; [1, None, 3]</span>\n<span class=\"p\">[</span><span class=\"s2\">&quot;&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;2&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;&quot;</span><span class=\"p\">]</span>  <span class=\"c1\"># -&gt; [None, 2]</span>\n</code></pre></div>\n</dd></dl>\n\n</dd></dl>\n\n</section>\n<section id=\"hstorefield\">\n<h3><code class=\"docutils literal notranslate\"><span class=\"pre\">HStoreField</span></code><a class=\"heading-anchor\" href=\"#hstorefield\"><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.contrib.postgres.forms.HStoreField\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">HStoreField</span></span><a class=\"heading-anchor\" href=\"#django.contrib.postgres.forms.HStoreField\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Un champ qui accepte des données codées en JSON pour un champ <a class=\"reference internal\" href=\"/fr/6.0/ref/contrib/postgres/fields/#django.contrib.postgres.fields.HStoreField\" title=\"django.contrib.postgres.fields.HStoreField\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">HStoreField</span></code></a>. Il force toutes les valeurs (sauf la valeur nulle) à des chaînes. En HTML, il est représenté par une balise <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;textarea&gt;</span></code>.</p>\n<aside class=\"admonition-user-friendly-forms admonition\">\n<p class=\"admonition-title\">Formulaires conviviaux</p>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">HStoreField</span></code> n’est pas particulièrement convivial dans la plupart des cas, il s’agit cependant d’une manière utile de mettre en forme des données d’un composant côté client en vue de son envoi vers le serveur.</p>\n</aside>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">Note</p>\n<p>Parfois, il est utile de pouvoir limiter les clés admises comme valides pour un champ donné. Cela peut se faire à l’aide de <a class=\"reference internal\" href=\"/fr/6.0/ref/contrib/postgres/validators/#django.contrib.postgres.validators.KeysValidator\" title=\"django.contrib.postgres.validators.KeysValidator\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">KeysValidator</span></code></a>.</p>\n</aside>\n</dd></dl>\n\n</section>\n<section id=\"range-fields\">\n<h3>Champs d’intervalle<a class=\"heading-anchor\" href=\"#range-fields\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Ce groupe de champs partage des fonctionnalités identiques pour accepter des données d’intervalle. Ils sont basés sur <a class=\"reference internal\" href=\"/fr/6.0/ref/forms/fields/#django.forms.MultiValueField\" title=\"django.forms.MultiValueField\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">MultiValueField</span></code></a>. Ils traitent une valeur omise comme un intervalle illimité. Ils valident aussi que la limite inférieure n’est pas plus grande que la limite supérieure. Tous ces champs utilisent le composant <a class=\"reference internal\" href=\"#django.contrib.postgres.forms.RangeWidget\" title=\"django.contrib.postgres.forms.RangeWidget\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">RangeWidget</span></code></a>.</p>\n<section id=\"integerrangefield\">\n<h4><code class=\"docutils literal notranslate\"><span class=\"pre\">IntegerRangeField</span></code><a class=\"heading-anchor\" href=\"#integerrangefield\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h4>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.postgres.forms.IntegerRangeField\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">IntegerRangeField</span></span><a class=\"heading-anchor\" href=\"#django.contrib.postgres.forms.IntegerRangeField\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Basé sur <a class=\"reference internal\" href=\"/fr/6.0/ref/forms/fields/#django.forms.IntegerField\" title=\"django.forms.IntegerField\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">IntegerField</span></code></a> et traduit la valeur saisie en intervalle <code class=\"docutils literal notranslate\"><span class=\"pre\">django.db.backends.postgresql.psycopg_any.NumericRange</span></code>. Champ de formulaire par défaut pour <a class=\"reference internal\" href=\"/fr/6.0/ref/contrib/postgres/fields/#django.contrib.postgres.fields.IntegerRangeField\" title=\"django.contrib.postgres.fields.IntegerRangeField\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">IntegerRangeField</span></code></a> et <a class=\"reference internal\" href=\"/fr/6.0/ref/contrib/postgres/fields/#django.contrib.postgres.fields.BigIntegerRangeField\" title=\"django.contrib.postgres.fields.BigIntegerRangeField\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">BigIntegerRangeField</span></code></a>.</p>\n</dd></dl>\n\n</section>\n<section id=\"decimalrangefield\">\n<h4><code class=\"docutils literal notranslate\"><span class=\"pre\">DecimalRangeField</span></code><a class=\"heading-anchor\" href=\"#decimalrangefield\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h4>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.postgres.forms.DecimalRangeField\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">DecimalRangeField</span></span><a class=\"heading-anchor\" href=\"#django.contrib.postgres.forms.DecimalRangeField\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Basé sur <a class=\"reference internal\" href=\"/fr/6.0/ref/forms/fields/#django.forms.DecimalField\" title=\"django.forms.DecimalField\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">DecimalField</span></code></a> et traduit la valeur saisie en intervalle <code class=\"docutils literal notranslate\"><span class=\"pre\">django.db.backends.postgresql.psycopg_any.NumericRange</span></code>. Champ de formulaire par défaut pour <a class=\"reference internal\" href=\"/fr/6.0/ref/contrib/postgres/fields/#django.contrib.postgres.fields.DecimalRangeField\" title=\"django.contrib.postgres.fields.DecimalRangeField\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">DecimalRangeField</span></code></a>.</p>\n</dd></dl>\n\n</section>\n<section id=\"datetimerangefield\">\n<h4><code class=\"docutils literal notranslate\"><span class=\"pre\">DateTimeRangeField</span></code><a class=\"heading-anchor\" href=\"#datetimerangefield\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h4>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.postgres.forms.DateTimeRangeField\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">DateTimeRangeField</span></span><a class=\"heading-anchor\" href=\"#django.contrib.postgres.forms.DateTimeRangeField\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Basé sur <a class=\"reference internal\" href=\"/fr/6.0/ref/forms/fields/#django.forms.DateTimeField\" title=\"django.forms.DateTimeField\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">DateTimeField</span></code></a> et traduit la valeur saisie en intervalle <code class=\"docutils literal notranslate\"><span class=\"pre\">django.db.backends.postgresql.psycopg_any.DateTimeTZRange</span></code>. Champ de formulaire par défaut pour <a class=\"reference internal\" href=\"/fr/6.0/ref/contrib/postgres/fields/#django.contrib.postgres.fields.DateTimeRangeField\" title=\"django.contrib.postgres.fields.DateTimeRangeField\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">DateTimeRangeField</span></code></a>.</p>\n</dd></dl>\n\n</section>\n<section id=\"daterangefield\">\n<h4><code class=\"docutils literal notranslate\"><span class=\"pre\">DateRangeField</span></code><a class=\"heading-anchor\" href=\"#daterangefield\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h4>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.postgres.forms.DateRangeField\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">DateRangeField</span></span><a class=\"heading-anchor\" href=\"#django.contrib.postgres.forms.DateRangeField\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Basé sur <a class=\"reference internal\" href=\"/fr/6.0/ref/forms/fields/#django.forms.DateField\" title=\"django.forms.DateField\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">DateField</span></code></a> et traduit la valeur saisie en intervalle <code class=\"docutils literal notranslate\"><span class=\"pre\">django.db.backends.postgresql.psycopg_any.DateRange</span></code>. Champ de formulaire par défaut pour <a class=\"reference internal\" href=\"/fr/6.0/ref/contrib/postgres/fields/#django.contrib.postgres.fields.DateRangeField\" title=\"django.contrib.postgres.fields.DateRangeField\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">DateRangeField</span></code></a>.</p>\n</dd></dl>\n\n</section>\n</section>\n</section>\n<section id=\"widgets\">\n<h2>Composants de formulaires (« widgets »)<a class=\"heading-anchor\" href=\"#widgets\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h2>\n<section id=\"rangewidget\">\n<h3><code class=\"docutils literal notranslate\"><span class=\"pre\">RangeWidget</span></code><a class=\"heading-anchor\" href=\"#rangewidget\"><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.contrib.postgres.forms.RangeWidget\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">RangeWidget</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">base_widget</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">attrs</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.postgres.forms.RangeWidget\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Composant utilisé par tous les champs d’intervalle. Basé sur <a class=\"reference internal\" href=\"/fr/6.0/ref/forms/widgets/#django.forms.MultiWidget\" title=\"django.forms.MultiWidget\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">MultiWidget</span></code></a>.</p>\n<p><a class=\"reference internal\" href=\"#django.contrib.postgres.forms.RangeWidget\" title=\"django.contrib.postgres.forms.RangeWidget\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">RangeWidget</span></code></a> requiert un paramètre obligatoire :</p>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.postgres.forms.RangeWidget.base_widget\">\n<span class=\"sig-name descname\"><span class=\"pre\">base_widget</span></span><a class=\"heading-anchor\" href=\"#django.contrib.postgres.forms.RangeWidget.base_widget\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Un intervalle <a class=\"reference internal\" href=\"#django.contrib.postgres.forms.RangeWidget\" title=\"django.contrib.postgres.forms.RangeWidget\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">RangeWidget</span></code></a> composé d’un tuple binaire de <code class=\"docutils literal notranslate\"><span class=\"pre\">base_widget</span></code>.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.postgres.forms.RangeWidget.decompress\">\n<span class=\"sig-name descname\"><span class=\"pre\">decompress</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">value</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.postgres.forms.RangeWidget.decompress\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Accepte une valeur « compressée » unique d’un champ, par exemple un intervalle <a class=\"reference internal\" href=\"/fr/6.0/ref/contrib/postgres/fields/#django.contrib.postgres.fields.DateRangeField\" title=\"django.contrib.postgres.fields.DateRangeField\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">DateRangeField</span></code></a>, et renvoie un tuple représentant les limites inférieure et supérieure.</p>\n</dd></dl>\n\n</dd></dl>\n\n</section>\n</section>","rootId":"postgresql-specific-form-fields-and-widgets","toc":[{"title":"Champs","anchor":"fields","children":[{"title":"SimpleArrayField","anchor":"simplearrayfield","children":[]},{"title":"SplitArrayField","anchor":"splitarrayfield","children":[]},{"title":"HStoreField","anchor":"hstorefield","children":[]},{"title":"Champs d’intervalle","anchor":"range-fields","children":[{"title":"IntegerRangeField","anchor":"integerrangefield","children":[]},{"title":"DecimalRangeField","anchor":"decimalrangefield","children":[]},{"title":"DateTimeRangeField","anchor":"datetimerangefield","children":[]},{"title":"DateRangeField","anchor":"daterangefield","children":[]}]}]},{"title":"Composants de formulaires (« widgets »)","anchor":"widgets","children":[{"title":"RangeWidget","anchor":"rangewidget","children":[]}]}],"breadcrumbs":[{"docname":"ref/index","title":"Référence de l’API","url":"/fr/6.0/ref/"},{"docname":"ref/contrib/index","title":"Paquets contrib","url":"/fr/6.0/ref/contrib/"},{"docname":"ref/contrib/postgres/index","title":"django.contrib.postgres","url":"/fr/6.0/ref/contrib/postgres/"}],"prev":{"docname":"ref/contrib/postgres/fields","title":"Champs de modèles spécifiques à PostgreSQL","url":"/fr/6.0/ref/contrib/postgres/fields/"},"next":{"docname":"ref/contrib/postgres/functions","title":"Fonctions de bases de données spécifiques à PostgreSQL","url":"/fr/6.0/ref/contrib/postgres/functions/"},"formats":{"html":"/fr/6.0/ref/contrib/postgres/forms/","markdown":"/fr/6.0/ref/contrib/postgres/forms.md","json":"/fr/6.0/ref/contrib/postgres/forms.json"},"source":"https://github.com/django/django/blob/stable/6.0.x/docs/ref/contrib/postgres/forms.txt","official":"https://docs.djangoproject.com/fr/6.0/ref/contrib/postgres/forms/","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","sv","zh-hans","ga","fr","ja","id","it","pt-br","ko","es","el","pl"]}