{"title":"Infrastructure de contrôle système","version":"4.2","locale":"fr","docname":"ref/checks","url":"/fr/4.2/ref/checks/","canonical":"https://djangodocs.dev/fr/4.2/ref/checks/","summary":"L’infrastructure de contrôle système est un ensemble de contrôles statiques pour valider les projets Django. Elle détecte les problèmes courants et fournit des…","html":"<h1>Infrastructure de contrôle système<a class=\"heading-anchor\" href=\"#system-check-framework\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h1>\n<p>L’infrastructure de contrôle système est un ensemble de contrôles statiques pour valider les projets Django. Elle détecte les problèmes courants et fournit des conseils sur la façon de les corriger. L’infrastructure est extensible de sorte que vous pouvez facilement ajouter vos propres contrôles.</p>\n<p>Pour plus de détails sur la façon d’ajouter vos propres contrôles et les intégrer aux contrôles systèmes de Django, consultez le <a class=\"reference internal\" href=\"/fr/4.2/topics/checks/\"><span class=\"doc\">Guide thématique sur la vérification système</span></a>.</p>\n<section id=\"api-reference\">\n<h2>Référence de l’API<a class=\"heading-anchor\" href=\"#api-reference\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h2>\n<section id=\"checkmessage\">\n<h3><code class=\"docutils literal notranslate\"><span class=\"pre\">CheckMessage</span></code><a class=\"heading-anchor\" href=\"#checkmessage\"><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.core.checks.CheckMessage\">\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\">CheckMessage</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">level</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">msg</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">hint</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\">obj</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\">id</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.core.checks.CheckMessage\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Les avertissements et les erreurs signalés par les contrôles systèmes doivent être des instances de <code class=\"docutils literal notranslate\"><span class=\"pre\">CheckMessage</span></code>. Une instance encapsule une seule erreur à signaler ou un seul avertissement. Elle fournit également des indicateurs et le contexte applicables au message, et un identifiant unique qui est utilisé à des fins de filtrage.</p>\n<p>Les arguments du constructeur sont :</p>\n<dl class=\"simple\">\n<dt><code class=\"docutils literal notranslate\"><span class=\"pre\">level</span></code></dt><dd><p>La gravité du message. Utilisez l’une des valeurs prédéfinies : <code class=\"docutils literal notranslate\"><span class=\"pre\">DEBUG</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">INFO</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">WARNING</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">ERROR</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">CRITICAL</span></code>. Si le niveau est supérieur ou égal à <code class=\"docutils literal notranslate\"><span class=\"pre\">ERROR</span></code>, Django empêchera l’exécution des commandes de gestion. Les messages avec un niveau inférieur à <code class=\"docutils literal notranslate\"><span class=\"pre\">ERROR</span></code> (i.e. les avertissements) sont présentés dans la console, mais peuvent être réduits au silence.</p>\n</dd>\n<dt><code class=\"docutils literal notranslate\"><span class=\"pre\">msg</span></code></dt><dd><p>Une courte chaîne (moins de 80 caractères) décrivant le problème. La chaîne ne doit <em>pas</em> contenir des sauts de ligne.</p>\n</dd>\n<dt><code class=\"docutils literal notranslate\"><span class=\"pre\">hint</span></code></dt><dd><p>Une chaîne d’une seule ligne offrant un indicateur pour résoudre le problème. Si aucun indicateur ne peut être fourni, ou s’il est évident à partir du message d’erreur, l’indicateur peut être omis, ou une valeur <code class=\"docutils literal notranslate\"><span class=\"pre\">None</span></code> peut être utilisée.</p>\n</dd>\n<dt><code class=\"docutils literal notranslate\"><span class=\"pre\">obj</span></code></dt><dd><p>Facultatif. Un objet fournissant le contexte du message (par exemple, le modèle où le problème a été découvert). L’objet doit être un modèle, un champ, un gestionnaire ou tout autre objet qui définit la méthode <code class=\"docutils literal notranslate\"><span class=\"pre\">__str__()</span></code>. La méthode est utilisée lors de la collecte de tous les messages et son résultat précède le message.</p>\n</dd>\n<dt><code class=\"docutils literal notranslate\"><span class=\"pre\">id</span></code></dt><dd><p>Chaîne facultative. Un identifiant unique pour le problème. Les identifiants doivent suivre le modèle <code class=\"docutils literal notranslate\"><span class=\"pre\">applabel.X001</span></code>, où <code class=\"docutils literal notranslate\"><span class=\"pre\">X</span></code> est l’une des lettres <code class=\"docutils literal notranslate\"><span class=\"pre\">CEWID</span></code>, indiquant la gravité du message (<code class=\"docutils literal notranslate\"><span class=\"pre\">C</span></code> pour critique, <code class=\"docutils literal notranslate\"><span class=\"pre\">E</span></code> pour les erreurs et ainsi de suite). Le numéro peut être attribué par l’application, mais doit être unique au sein de cette application.</p>\n</dd>\n</dl>\n<p>Il existe des sous-classes pour faciliter la création des messages avec les niveaux de base. Lorsque vous les utilisez, vous pouvez omettre le paramètre <code class=\"docutils literal notranslate\"><span class=\"pre\">level</span></code> car il est sous-entendu par le nom de la classe.</p>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.core.checks.Debug\">\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\">Debug</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">msg</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">hint</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\">obj</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\">id</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.core.checks.Debug\"><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 class\">\n<dt class=\"sig sig-object py\" id=\"django.core.checks.Info\">\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\">Info</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">msg</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">hint</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\">obj</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\">id</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.core.checks.Info\"><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 class\">\n<dt class=\"sig sig-object py\" id=\"django.core.checks.Warning\">\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\">Warning</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">msg</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">hint=None</span> <span class=\"pre\">obj=None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">id=None</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.core.checks.Warning\"><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 class\">\n<dt class=\"sig sig-object py\" id=\"django.core.checks.Error\">\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\">Error</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">msg</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">hint</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\">obj</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\">id</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.core.checks.Error\"><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 class\">\n<dt class=\"sig sig-object py\" id=\"django.core.checks.Critical\">\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\">Critical</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">msg</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">hint</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\">obj</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\">id</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.core.checks.Critical\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n</section>\n</section>\n<section id=\"builtin-tags\">\n<span id=\"system-check-builtin-tags\"></span><h2>Étiquettes prédéfinies<a class=\"heading-anchor\" href=\"#builtin-tags\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Les contrôles systèmes de Django sont organisés en utilisant les étiquettes suivantes :</p>\n<ul class=\"simple\">\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">admin</span></code>: contrôles de toutes les déclarations de sites d’administration.</p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">async_support</span></code>: contrôle la configuration liée au code asynchrone.</p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">caches</span></code>: contrôle la configuration liée aux caches (mémoire tampon).</p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">compatibility</span></code>: identification de problèmes potentiels avec les mises à jour.</p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">database</span></code>: vérifie des problèmes de configuration liés aux bases de données. Les contrôles de base de données ne sont pas exécutés par défaut car ils font plus que de l’analyse de code statique comme le font les autres contrôles. Ils ne sont lancés que par la commande <a class=\"reference internal\" href=\"/fr/4.2/ref/django-admin/#django-admin-migrate\"><code class=\"xref std std-djadmin docutils literal notranslate\"><span class=\"pre\">migrate</span></code></a> ou si vous indiquez des alias de base de données configurés avec l’option <code class=\"docutils literal notranslate\"><span class=\"pre\">database</span></code>  lors de l’appel à la commande <a class=\"reference internal\" href=\"/fr/4.2/ref/django-admin/#django-admin-check\"><code class=\"xref std std-djadmin docutils literal notranslate\"><span class=\"pre\">check</span></code></a>.</p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">files</span></code>: contrôle la configuration liée aux fichiers.</p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">models</span></code>: contrôles régissant les définitions de modèles, champs et gestionnaires.</p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">security</span></code>: contrôle la configuration liée à la sécurité.</p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">signals</span></code>: contrôles des déclarations de signaux et des enregistrements de gestionnaires.</p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">sites</span></code>: contrôle la configuration de <a class=\"reference internal\" href=\"/fr/4.2/ref/contrib/sites/#module-django.contrib.sites\" title=\"django.contrib.sites: Lets you operate multiple websites from the same database and Django project\"><code class=\"xref py py-mod docutils literal notranslate\"><span class=\"pre\">django.contrib.sites</span></code></a>.</p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">staticfiles</span></code>: contrôle la configuration liée à <a class=\"reference internal\" href=\"/fr/4.2/ref/contrib/staticfiles/#module-django.contrib.staticfiles\" title=\"django.contrib.staticfiles: An app for handling static files.\"><code class=\"xref py py-mod docutils literal notranslate\"><span class=\"pre\">django.contrib.staticfiles</span></code></a>.</p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">templates</span></code>: contrôle la configuration liée aux gabarits.</p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">translation</span></code>: vérifie la configuration liée aux traductions.</p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">urls</span></code>:  contrôle la configuration des URL.</p></li>\n</ul>\n<p>Certains contrôles peuvent être enregistrés sous plusieurs étiquettes.</p>\n</section>\n<section id=\"core-system-checks\">\n<h2>Vérifications systèmes du noyau<a class=\"heading-anchor\" href=\"#core-system-checks\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h2>\n<section id=\"asynchronous-support\">\n<h3>Gestion du code asynchrone<a class=\"heading-anchor\" href=\"#asynchronous-support\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Les contrôles suivants vérifient votre configuration concernant <a class=\"reference internal\" href=\"/fr/4.2/topics/async/\"><span class=\"doc\">Gestion du code asynchrone</span></a>:</p>\n<ul class=\"simple\">\n<li><p><strong>async.E001</strong> : vous ne devez pas définir la variable d’environnement envvar:DJANGO_ALLOW_ASYNC_UNSAFE en déploiement. Cela désactive la <a class=\"reference internal\" href=\"/fr/4.2/topics/async/#async-safety\"><span class=\"std std-ref\">protection de sécurité async</span></a>.</p></li>\n</ul>\n</section>\n<section id=\"backwards-compatibility\">\n<h3>Rétrocompatibilité<a class=\"heading-anchor\" href=\"#backwards-compatibility\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Les contrôles de compatibilité alertent sur des problèmes potentiels pouvant se produire après une mise à jour de Django.</p>\n<ul class=\"simple\">\n<li><p><strong>2_0.W001</strong> : le motif d’URL <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;pattern&gt;</span></code> possède une route contenant <code class=\"docutils literal notranslate\"><span class=\"pre\">(?P&lt;</span></code>, commençant par <code class=\"docutils literal notranslate\"><span class=\"pre\">^</span></code> ou se terminant par <code class=\"docutils literal notranslate\"><span class=\"pre\">$</span></code>. Il s’agit probablement d’un oubli lors du passage de <code class=\"docutils literal notranslate\"><span class=\"pre\">url()</span></code> à <a class=\"reference internal\" href=\"/fr/4.2/ref/urls/#django.urls.path\" title=\"django.urls.path\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">path()</span></code></a>.</p></li>\n<li><p><strong>4_0.E001</strong>: à partir de Django 4.0, les valeurs du réglage <a class=\"reference internal\" href=\"/fr/4.2/ref/settings/#std-setting-CSRF_TRUSTED_ORIGINS\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">CSRF_TRUSTED_ORIGINS</span></code></a> doivent commencer par un protocole (généralement http://` ou <code class=\"docutils literal notranslate\"><span class=\"pre\">https://</span></code>), mais <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;nom_hôte&gt;</span></code> a été trouvé.</p></li>\n</ul>\n</section>\n<section id=\"caches\">\n<h3>Caches<a class=\"heading-anchor\" href=\"#caches\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Les contrôles suivants vérifient que le réglage <a class=\"reference internal\" href=\"/fr/4.2/ref/settings/#std-setting-CACHES\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">CACHES</span></code></a> est configuré correctement :</p>\n<ul class=\"simple\">\n<li><p><strong>caches.E001</strong> : vous devez définir un cache <code class=\"docutils literal notranslate\"><span class=\"pre\">'default'</span></code> dans votre réglage <a class=\"reference internal\" href=\"/fr/4.2/ref/settings/#std-setting-CACHES\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">CACHES</span></code></a>.</p></li>\n<li><p><strong>caches.W002</strong> : votre configuration de <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;cache&gt;</span></code> peut exposer votre cache ou permettre une corruption de vos données car son emplacement <a class=\"reference internal\" href=\"/fr/4.2/ref/settings/#std-setting-CACHES-LOCATION\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">LOCATION</span></code></a> correspond à, ou se trouve dans un des réglages <a class=\"reference internal\" href=\"/fr/4.2/ref/settings/#std-setting-MEDIA_ROOT\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">MEDIA_ROOT</span></code></a>/<a class=\"reference internal\" href=\"/fr/4.2/ref/settings/#std-setting-STATIC_ROOT\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">STATIC_ROOT</span></code></a>/<a class=\"reference internal\" href=\"/fr/4.2/ref/settings/#std-setting-STATICFILES_DIRS\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">STATICFILES_DIRS</span></code></a>.</p></li>\n<li><p><strong>caches.W003</strong> : l’emplacement  <a class=\"reference internal\" href=\"/fr/4.2/ref/settings/#std-setting-CACHES-LOCATION\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">LOCATION</span></code></a> du <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;cache&gt;</span></code> est relatif. Utilisez plutôt un chemin absolu.</p></li>\n</ul>\n</section>\n<section id=\"database\">\n<h3>Base de données<a class=\"heading-anchor\" href=\"#database\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<section id=\"mysql-and-mariadb\">\n<h4>MySQL et MariaDB<a class=\"heading-anchor\" href=\"#mysql-and-mariadb\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>Si vous utilisez MySQL ou MariaDB, les contrôles suivants seront effectués :</p>\n<ul class=\"simple\">\n<li><p><strong>mysql.E001</strong> : MySQL/MariaDB ne permet pas aux champs <code class=\"docutils literal notranslate\"><span class=\"pre\">CharField</span></code> uniques d’avoir un attribut <code class=\"docutils literal notranslate\"><span class=\"pre\">max_length</span></code> &gt; 255. <em>Ce contrôle a été transformé en</em> <code class=\"docutils literal notranslate\"><span class=\"pre\">mysql.W003</span></code> <em>dans Django 3.1 car la taille maximale réelle dépend de plusieurs facteurs.</em></p></li>\n<li><p><strong>mysql.W002</strong> : le mode strict de MySQL/MariaDB n’est pas défini pour la connexion de base de données <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;alias&gt;</span></code>. Voir aussi <a class=\"reference internal\" href=\"/fr/4.2/ref/databases/#mysql-sql-mode\"><span class=\"std std-ref\">Définition de sql_mode</span></a>.</p></li>\n<li><p><strong>mysql.W003</strong> : MySQL/MariaDB pourrait ne pas permettre aux champs <code class=\"docutils literal notranslate\"><span class=\"pre\">CharField</span></code> uniques d’avoir un attribut <code class=\"docutils literal notranslate\"><span class=\"pre\">max_length</span></code> &gt; 255.</p></li>\n</ul>\n</section>\n</section>\n<section id=\"managing-files\">\n<h3>Gestion des fichiers<a class=\"heading-anchor\" href=\"#managing-files\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Les contrôles suivants vérifient votre configuration concernant <a class=\"reference internal\" href=\"/fr/4.2/topics/files/\"><span class=\"doc\">Gestion des fichiers</span></a>:</p>\n<ul class=\"simple\">\n<li><p><strong>files.E001</strong> : le réglage  <a class=\"reference internal\" href=\"/fr/4.2/ref/settings/#std-setting-FILE_UPLOAD_TEMP_DIR\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">FILE_UPLOAD_TEMP_DIR</span></code></a> se réfère au répertoire inexistant <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;path&gt;</span></code>.</p></li>\n</ul>\n</section>\n<section id=\"model-fields\">\n<h3>Champs de modèle<a class=\"heading-anchor\" href=\"#model-fields\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<ul class=\"simple\">\n<li><p><strong>fields.E001</strong> : les noms de champ ne doivent pas se terminer par un trait de soulignement.</p></li>\n<li><p><strong>fields.E002</strong> : les noms de champ ne doivent pas contenir <code class=\"docutils literal notranslate\"><span class=\"pre\">&quot;__&quot;</span></code>.</p></li>\n<li><p><em>fields.E003*</em> : <code class=\"docutils literal notranslate\"><span class=\"pre\">pk</span></code> est un mot réservé et ne peut pas être utilisé comme nom de champ.</p></li>\n<li><p><strong>fields.E004</strong> : <code class=\"docutils literal notranslate\"><span class=\"pre\">choices</span></code> doit être un élément itérable (par ex. une liste ou un tuple).</p></li>\n<li><p><strong>fields.E005</strong> : <code class=\"docutils literal notranslate\"><span class=\"pre\">choices</span></code> doit être un élément itérable contenant des tuples <code class=\"docutils literal notranslate\"><span class=\"pre\">(valeur</span> <span class=\"pre\">réelle,</span> <span class=\"pre\">nom</span> <span class=\"pre\">convivial)</span></code>.</p></li>\n<li><p><strong>fields.E006</strong> : <code class=\"docutils literal notranslate\"><span class=\"pre\">db_index</span></code> ne peut contenir que <code class=\"docutils literal notranslate\"><span class=\"pre\">None</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code> ou <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code>.</p></li>\n<li><p><strong>fields.E007</strong> : les clés primaires ne peuvent pas contenir <code class=\"docutils literal notranslate\"><span class=\"pre\">null=True</span></code>.</p></li>\n<li><p><strong>fields.E008</strong> : tous les <code class=\"docutils literal notranslate\"><span class=\"pre\">validators</span></code> doivent être exécutables.</p></li>\n<li><p><strong>fields.E009</strong> : <code class=\"docutils literal notranslate\"><span class=\"pre\">max_length</span></code> est trop court pour accueillir la plus longue valeur de <code class=\"docutils literal notranslate\"><span class=\"pre\">choices</span></code> (<code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;count&gt;</span></code> caractères).</p></li>\n<li><p><strong>fields.E010</strong> : la valeur par défaut de <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;champ&gt;</span></code> doit être un objet exécutable plutôt qu’une instance afin qu’elle ne soit pas partagée entre toutes les instances de ce champ.</p></li>\n<li><p><strong>fields.E100</strong> : les champs <code class=\"docutils literal notranslate\"><span class=\"pre\">AutoField</span></code> doivent déclarer <code class=\"docutils literal notranslate\"><span class=\"pre\">primary_key=True</span></code>.</p></li>\n<li><p><strong>fields.E110</strong> : les champs <code class=\"docutils literal notranslate\"><span class=\"pre\">BooleanField</span></code> n’acceptent pas les valeurs nulles. <em>Ce contrôle est apparu avant la prise en charge des valeurs nulles ajoutée dans Django 2.1.</em></p></li>\n<li><p><strong>fields.E120</strong> : les champs <code class=\"docutils literal notranslate\"><span class=\"pre\">CharField</span></code> doivent définir un attribut <code class=\"docutils literal notranslate\"><span class=\"pre\">max_length</span></code>.</p></li>\n<li><p><strong>fields.E121</strong> : <code class=\"docutils literal notranslate\"><span class=\"pre\">max_length</span></code> doit être un entier positif.</p></li>\n<li><p><strong>fields.W122</strong> : <code class=\"docutils literal notranslate\"><span class=\"pre\">max_length</span></code> est ignoré lorsqu’il est utilisé pour un champ <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;type</span> <span class=\"pre\">de</span> <span class=\"pre\">champ</span> <span class=\"pre\">entier&gt;</span></code>.</p></li>\n<li><p><strong>fields.E130</strong> : les champs <code class=\"docutils literal notranslate\"><span class=\"pre\">DecimalField</span></code> doivent définir un attribut <code class=\"docutils literal notranslate\"><span class=\"pre\">decimal_places</span></code>.</p></li>\n<li><p><strong>fields.E131</strong> : <code class=\"docutils literal notranslate\"><span class=\"pre\">decimal_places</span></code> doit être un entier non négatif.</p></li>\n<li><p><strong>fields.E132</strong> : les champs <code class=\"docutils literal notranslate\"><span class=\"pre\">DecimalField</span></code> doivent définir un attribut <code class=\"docutils literal notranslate\"><span class=\"pre\">max_digits</span></code>.</p></li>\n<li><p><strong>fields.E133</strong> : <code class=\"docutils literal notranslate\"><span class=\"pre\">max_digits</span></code> doit être un entier positif.</p></li>\n<li><p><strong>fields.E134</strong> : <code class=\"docutils literal notranslate\"><span class=\"pre\">max_digits</span></code> doit être supérieur ou égal à <code class=\"docutils literal notranslate\"><span class=\"pre\">decimal_places</span></code>.</p></li>\n<li><p><strong>fields.E140</strong> : les champs <code class=\"docutils literal notranslate\"><span class=\"pre\">FilePathField</span></code> doivent comporter l’un des deux attributs <code class=\"docutils literal notranslate\"><span class=\"pre\">allow_files</span></code> et <code class=\"docutils literal notranslate\"><span class=\"pre\">allow_folders</span></code> défini à <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code>.</p></li>\n<li><p><strong>fields.E150</strong> : les champs <code class=\"docutils literal notranslate\"><span class=\"pre\">GenericIPAddressField</span></code> ne peuvent avoir <code class=\"docutils literal notranslate\"><span class=\"pre\">blank=True</span></code> si <code class=\"docutils literal notranslate\"><span class=\"pre\">null=False</span></code>, car les valeurs vides sont stockées sous forme de valeurs nulles.</p></li>\n<li><p><strong>fields.E160</strong> : les options <code class=\"docutils literal notranslate\"><span class=\"pre\">auto_now</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">auto_now_add</span></code> et <code class=\"docutils literal notranslate\"><span class=\"pre\">default</span></code> sont mutuellement exclusives. Une seule de ces options doit être conservée.</p></li>\n<li><p><strong>fields.W161</strong> : une valeur par défaut fixe est indiquée.</p></li>\n<li><p><strong>fields.W162</strong> : <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;base_de_données&gt;</span></code> ne prend pas en charge les index sur les colonnes <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;type</span> <span class=\"pre\">données</span> <span class=\"pre\">champ&gt;</span></code>.</p></li>\n<li><p><strong>fields.W163</strong>: <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;base_de_données&gt;</span></code> ne gère pas les commentaires sur les colonnes (<code class=\"docutils literal notranslate\"><span class=\"pre\">db_comment</span></code>).</p></li>\n<li><p><strong>fields.E170</strong> : la valeur par défaut de <code class=\"docutils literal notranslate\"><span class=\"pre\">BinaryField</span></code> ne peut pas être une chaîne. Utilisez plutôt un contenu binaire.</p></li>\n<li><p><strong>fields.E180</strong> : <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;base</span> <span class=\"pre\">de</span> <span class=\"pre\">données&gt;</span></code> ne prend pas en charge les champs <code class=\"docutils literal notranslate\"><span class=\"pre\">JSONField</span></code>.</p></li>\n<li><p><strong>fields.E190</strong> : <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;base_de_données&gt;</span></code> ne prend pas en charge les collations sur les colonnes <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;field_type&gt;</span></code>.</p></li>\n<li><p><strong>fields.E900</strong> : <code class=\"docutils literal notranslate\"><span class=\"pre\">IPAddressField</span></code> a été supprimé, sauf pour la prise en charge de migrations historiques.</p></li>\n<li><p><strong>fields.W900</strong> : <code class=\"docutils literal notranslate\"><span class=\"pre\">IPAddressField</span></code> est obsolète. Sa prise en charge (à l’exception des migrations historiques) sera supprimée dans Django 1.9. <em>Ce contrôle apparaît dans Django 1.7 et 1.8</em>.</p></li>\n<li><p><strong>fields.W901</strong> : <code class=\"docutils literal notranslate\"><span class=\"pre\">CommaSeparatedIntegerField</span></code> est obsolète. Sa prise en charge (à l’exception des migrations historiques) sera supprimée dans Django 2.0. <em>Ce contrôle apparaît avec Django 1.10 et 1.11</em>.</p></li>\n<li><p><strong>fields.E901</strong> : <code class=\"docutils literal notranslate\"><span class=\"pre\">CommaSeparatedIntegerField</span></code> a été supprimé, sauf pour la prise en charge de migrations historiques.</p></li>\n<li><p><strong>fields.W902</strong>: <code class=\"docutils literal notranslate\"><span class=\"pre\">FloatRangeField</span></code> est obsolète et sera supprimé dans Django 3.1. <em>Ce contrôle est apparu dans Django 2.2 et 3.0</em>.</p></li>\n<li><p><strong>fields.W903</strong> : <code class=\"docutils literal notranslate\"><span class=\"pre\">NullBooleanField</span></code> est obsolète. Sa prise en charge (à l’exception des migrations historiques) sera supprimée dans Django 4.0. <em>Ce contrôle apparaît dans Django 3.1 et 3.2</em>.</p></li>\n<li><p><strong>fields.E903</strong> : <code class=\"docutils literal notranslate\"><span class=\"pre\">NullBooleanField</span></code> a été supprimé, sauf pour la prise en charge de migrations historiques.</p></li>\n<li><p><strong>fields.W904</strong> : <code class=\"docutils literal notranslate\"><span class=\"pre\">django.contrib.postgres.fields.JSONField</span></code> est obsolète. Sa prise en charge (à l’exception des migrations historiques) sera supprimée dans Django 4.0. <em>Ce contrôle apparaît dans Django 3.1 et 3.2</em>.</p></li>\n<li><p><strong>fields.E904</strong> :  <code class=\"docutils literal notranslate\"><span class=\"pre\">django.contrib.postgres.fields.JSONField</span></code> a été supprimé, sauf pour la prise en charge de migrations historiques.</p></li>\n<li><p><strong>fields.W905</strong> : <code class=\"docutils literal notranslate\"><span class=\"pre\">django.contrib.postgres.fields.CICharField</span></code> est osbolète. Sa prise en charge (sauf pour les migrations historiques) sera supprimée dans Django 5.1.</p></li>\n<li><p><strong>fields.W906</strong> : <code class=\"docutils literal notranslate\"><span class=\"pre\">django.contrib.postgres.fields.CIEmailField</span></code> est obsolète. Sa prise en charge (à l’exception des migrations historiques) sera supprimée dans Django 5.1.</p></li>\n<li><p><strong>fields.W907</strong> : <code class=\"docutils literal notranslate\"><span class=\"pre\">django.contrib.postgres.fields.CITextField</span></code> est obsolète. Sa prise en charge (à l’exception des migrations historiques) sera supprimée dans Django 5.1.</p></li>\n</ul>\n<section id=\"file-fields\">\n<h4>Champs de type fichier<a class=\"heading-anchor\" href=\"#file-fields\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h4>\n<ul class=\"simple\">\n<li><p><strong>fields.E200</strong> : <code class=\"docutils literal notranslate\"><span class=\"pre\">unique</span></code> n’est pas un paramètre valable pour un champ <code class=\"docutils literal notranslate\"><span class=\"pre\">FileField</span></code>. <em>Ce contrôle est supprimé dans Django 1.11</em>.</p></li>\n<li><p><strong>fields.E201</strong> : <code class=\"docutils literal notranslate\"><span class=\"pre\">primary_key</span></code> n’est pas un paramètre valable pour un champ <code class=\"docutils literal notranslate\"><span class=\"pre\">FileField</span></code>.</p></li>\n<li><p><strong>fields.E202</strong> : le paramètre <code class=\"docutils literal notranslate\"><span class=\"pre\">upload_to</span></code> de <code class=\"docutils literal notranslate\"><span class=\"pre\">FileField</span></code> doit être un chemin relatif, et non absolu.</p></li>\n<li><p><strong>fields.E210</strong> : impossible d’utiliser <code class=\"docutils literal notranslate\"><span class=\"pre\">ImageField</span></code> car Pillow n’est pas installé.</p></li>\n</ul>\n</section>\n<section id=\"related-fields\">\n<h4>Champs de liaison<a class=\"heading-anchor\" href=\"#related-fields\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h4>\n<ul class=\"simple\">\n<li><p><strong>fields.E300</strong> : le champ définit une relation avec le modèle <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;model&gt;</span></code>, qui n’est pas installé ou qui est abstrait.</p></li>\n<li><p><strong>fields.E301</strong> : le champ définit une relation avec le modèle <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;étiquette_app&gt;.&lt;modèle&gt;</span></code> qui a été substitué.</p></li>\n<li><p><strong>fields.E302</strong> : l’accesseur inverse <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;modèle</span> <span class=\"pre\">lié&gt;.&lt;nom</span> <span class=\"pre\">accesseur&gt;</span></code> pour <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;étiquette_app&gt;.&lt;modèle&gt;.&lt;nom</span> <span class=\"pre\">champ&gt;</span></code> entre en conflit avec le nom du champ <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;étiquette_app&gt;.&lt;modèle&gt;.&lt;nom</span> <span class=\"pre\">champ&gt;</span></code>.</p></li>\n<li><p><strong>fields.E303</strong> : le nom de requête inverse pour <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;étiquette_app&gt;.&lt;modèle&gt;.&lt;nom_de_champ&gt;</span></code> entre en conflit avec le nom du champ <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;étiquette_app&gt;.&lt;modèle&gt;.&lt;nom_de_champ&gt;</span></code>.</p></li>\n<li><p><strong>fields.E304</strong> : l’accesseur inverse <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;modèle</span> <span class=\"pre\">lié&gt;.&lt;nom</span> <span class=\"pre\">accesseur&gt;</span></code> pour <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;étiquette_app&gt;.&lt;modèle&gt;.&lt;nom</span> <span class=\"pre\">champ&gt;</span></code> entre en conflit avec l’accesseur inverse pour <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;étiquette_app&gt;.&lt;modèle&gt;.&lt;nom</span> <span class=\"pre\">champ&gt;</span></code>.</p></li>\n<li><p><strong>fields.E305</strong> : le nom de requête inverse de <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;étiquette_app&gt;.&lt;modèle&gt;.&lt;nom_de_champ&gt;</span></code> entre en conflit avec le nom de requête inverse de <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;étiquette_app&gt;.&lt;modèle&gt;.&lt;nom_de_champ&gt;</span></code>.</p></li>\n<li><p><strong>fields.E306</strong> : le nom <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;name&gt;</span></code> n’est pas un nom <code class=\"docutils literal notranslate\"><span class=\"pre\">related_name</span></code> valable pour le champ <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;modèle&gt;.&lt;nom_de_champ&gt;</span></code>.</p></li>\n<li><p><strong>fields.E307</strong> : le champ  <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;étiquette_app&gt;.&lt;modèle&gt;.&lt;nom_de_champ&gt;</span></code> a été déclaré avec une référence différée à <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;étiquette_app&gt;.&lt;modèle&gt;</span></code>, mais l’application <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;étiquette_app&gt;</span></code> n’est pas installée ou ne fournit pas de modèle <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;modèle&gt;</span></code>.</p></li>\n<li><p><strong>fields.E308</strong> : le nom de requête inverse <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;nom_requête_inverse&gt;</span></code> ne doit pas se terminer par un soulignement.</p></li>\n<li><p><strong>fields.E309</strong> : le nom de requête inverse <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;nom_requête_inverse&gt;</span></code> ne doit pas contenir <code class=\"docutils literal notranslate\"><span class=\"pre\">'__'</span></code>.</p></li>\n<li><p><strong>fields.E310</strong> : aucun sous-ensemble des champs <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;champ1&gt;</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;champ2&gt;</span></code>, … du modèle <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;modèle&gt;</span></code> n’a de contrainte unique.</p></li>\n<li><p><strong>fields.E311</strong> : <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;modèle&gt;.&lt;nom</span> <span class=\"pre\">de</span> <span class=\"pre\">champ&gt;</span></code> doit être unique car il est référencé par une clé <code class=\"docutils literal notranslate\"><span class=\"pre\">ForeignKey</span></code>.</p></li>\n<li><p><strong>fields.E312</strong> : le paramètre <code class=\"docutils literal notranslate\"><span class=\"pre\">to_field</span></code> <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;nom_champ&gt;</span></code> n’existe pas dans le modèle lié  <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;étiquette_app&gt;.&lt;modèle&gt;</span></code>.</p></li>\n<li><p><strong>fields.E320</strong> : le champ contient <code class=\"docutils literal notranslate\"><span class=\"pre\">on_delete=SET_NULL</span></code> mais il ne peut pas être nul.</p></li>\n<li><p><strong>fields.E321</strong> : le champ contient <code class=\"docutils literal notranslate\"><span class=\"pre\">on_delete=SET_DEFAULT</span></code> mais il n’a pas de valeur par défaut.</p></li>\n<li><p><strong>fields.E330</strong> : les champs <code class=\"docutils literal notranslate\"><span class=\"pre\">ManyToManyField</span></code> ne peuvent pas être uniques.</p></li>\n<li><p><strong>fields.E331</strong> : le champ définit une relation plusieurs-à-plusieurs via le modèle <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;modèle&gt;</span></code> qui n’a pas été installé.</p></li>\n<li><p><strong>fields.E332</strong> : les champs plusieurs-à-plusieurs avec des tables intermédiaires ne peuvent pas être symétriques. <em>Ce contrôle est apparu avant Django 3.0.</em></p></li>\n<li><p><strong>fields.E333</strong> : le modèle est utilisé en tant que modèle intermédiaire par <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;modèle&gt;</span></code> mais il a plus de deux clés étrangères vers <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;modèle&gt;</span></code>, ce qui est ambigu. Vous devez indiquer laquelle des deux clés étrangères Django doit utiliser via le paramètre nommé <code class=\"docutils literal notranslate\"><span class=\"pre\">through_fields</span></code>.</p></li>\n<li><p><strong>fields.E334</strong> : le modèle est utilisé en tant que modèle intermédiaire par <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;modèle&gt;</span></code> mais il a plus d’une clé étrangère depuis <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;modèle&gt;</span></code>, ce qui est ambigu. Vous devez indiquer quelle clé étrangère Django doit utiliser via le paramètre nommé <code class=\"docutils literal notranslate\"><span class=\"pre\">through_fields</span></code>.</p></li>\n<li><p><strong>fields.E335</strong> : le modèle est utilisé en tant que modèle intermédiaire par <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;modèle&gt;</span></code> mais il a plus d’une clé étrangère vers <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;modèle&gt;</span></code>, ce qui est ambigu. Vous devez indiquer quelle clé étrangère Django doit utiliser via le paramètre nommé <code class=\"docutils literal notranslate\"><span class=\"pre\">through_fields</span></code>.</p></li>\n<li><p><strong>fields.E336</strong> : le modèle est utilisé en tant que modèle intermédiaire par <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;modèle&gt;</span></code> mais il n’a pas de clé étrangère vers <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;modèle&gt;</span></code> ou <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;modèle&gt;</span></code>.</p></li>\n<li><p><strong>fields.E337</strong> : le champ définit <code class=\"docutils literal notranslate\"><span class=\"pre\">through_fields</span></code> mais ne fournit pas le nom des deux champs de liaison qui doivent être utilisés pour la relation via <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;modèle&gt;</span></code>.</p></li>\n<li><p><strong>fields.E338</strong> : le modèle intermédiaire <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;through</span> <span class=\"pre\">model&gt;</span></code> n’a pas de champ <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;nom_de_champ&gt;</span></code>.</p></li>\n<li><p><strong>fields.E339</strong> : <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;modèle&gt;.&lt;nom_de_champ&gt;</span></code> n’est pas une clé étrangère vers <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;modèle&gt;</span></code>.</p></li>\n<li><p><strong>fields.E340</strong> : la table intermédiaire du champ <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;nom</span> <span class=\"pre\">table&gt;</span></code> entre en conflit avec le nom de la table de <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;modèle&gt;</span></code>/<code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;modèle&gt;.&lt;nom</span> <span class=\"pre\">champ&gt;</span></code>.</p></li>\n<li><p><strong>fields.W340</strong> : <code class=\"docutils literal notranslate\"><span class=\"pre\">null</span></code> n’a pas d’effet sur le champ <code class=\"docutils literal notranslate\"><span class=\"pre\">ManyToManyField</span></code>.</p></li>\n<li><p><strong>fields.W341</strong> : <code class=\"docutils literal notranslate\"><span class=\"pre\">ManyToManyField</span></code> ne prend pas en charge le paramètre <code class=\"docutils literal notranslate\"><span class=\"pre\">validators</span></code>.</p></li>\n<li><p><strong>fields.W342</strong> : la définition de <code class=\"docutils literal notranslate\"><span class=\"pre\">unique=True</span></code> sur un champ <code class=\"docutils literal notranslate\"><span class=\"pre\">ForeignKey</span></code> a le même effet que d’utiliser un champ <code class=\"docutils literal notranslate\"><span class=\"pre\">OneToOneField</span></code>.</p></li>\n<li><p><strong>fields.W343</strong> : <code class=\"docutils literal notranslate\"><span class=\"pre\">limit_choices_to</span></code> n’a aucun effet sur le champ <code class=\"docutils literal notranslate\"><span class=\"pre\">ManyToManyField</span></code> avec modèle intermédiaire. <em>Ce contrôle est apparu avant Django 4.0.</em></p></li>\n<li><p><strong>fields.W344</strong> : la table intermédiaire du champ <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;nom</span> <span class=\"pre\">table&gt;</span></code> entre en conflit avec le nom de la table de <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;modèle&gt;</span></code>/<code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;modèle&gt;.&lt;nom</span> <span class=\"pre\">champ&gt;</span></code>.</p></li>\n<li><p><strong>fields.W345</strong> : <code class=\"docutils literal notranslate\"><span class=\"pre\">related_name</span></code> n’a aucun effet sur le champ <code class=\"docutils literal notranslate\"><span class=\"pre\">ManyToManyField</span></code> avec une relation symétrique, par ex. vers <code class=\"docutils literal notranslate\"><span class=\"pre\">self</span></code>.</p></li>\n<li><p><strong>fields.W346</strong> : <code class=\"docutils literal notranslate\"><span class=\"pre\">db_comment</span></code> n’a aucun effet sur les champs <code class=\"docutils literal notranslate\"><span class=\"pre\">ManyToManyField</span></code>.</p></li>\n</ul>\n</section>\n</section>\n<section id=\"models\">\n<h3>Modèles<a class=\"heading-anchor\" href=\"#models\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<ul class=\"simple\">\n<li><p><strong>models.E001</strong> : <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;swappable&gt;</span></code> n’est pas sous la forme <code class=\"docutils literal notranslate\"><span class=\"pre\">étiquette_app.nom_app</span></code>.</p></li>\n<li><p><strong>models.E002</strong> : <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;RÉGLAGE&gt;</span></code> fait référence à <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;modèle&gt;</span></code>, qui n’est pas installé ou qui est abstrait.</p></li>\n<li><p><strong>models.E003</strong> : le modèle possède deux relations plusieurs-à-plusieurs identiques via le modèle intermédiaire <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;étiquette_app&gt;.&lt;modèle&gt;</span></code>.</p></li>\n<li><p><strong>models.E004</strong> : <code class=\"docutils literal notranslate\"><span class=\"pre\">id</span></code> ne peut être utilisé comme nom de champ que si le champ définit aussi <code class=\"docutils literal notranslate\"><span class=\"pre\">primary_key=True</span></code>.</p></li>\n<li><p><strong>models.E005</strong> : le champ <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;nom_de_champ&gt;</span></code> du modèle parent <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;modèle&gt;</span></code> entre en conflit avec le champ <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;nom_de_champ&gt;</span></code> du modèle parent <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;modèle&gt;</span></code>.</p></li>\n<li><p><strong>models.E006</strong> : le champ <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;nom_de_champ&gt;</span></code> entre en conflit avec le champ <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;nom_de_champ&gt;</span></code> du modèle <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;modèle&gt;</span></code>.</p></li>\n<li><p><strong>models.E007</strong> : le champ <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;nom_de_champ&gt;</span></code> a le nom de colonne <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;nom_de_colonne&gt;</span></code> qui est utilisé par un autre champ.</p></li>\n<li><p><strong>models.E008</strong> : <code class=\"docutils literal notranslate\"><span class=\"pre\">index_together</span></code> doit être une liste ou un tuple.</p></li>\n<li><p><strong>models.E009</strong> : tous les éléments de <code class=\"docutils literal notranslate\"><span class=\"pre\">index_together</span></code> doivent être des listes ou des tuples.</p></li>\n<li><p><strong>models.E010</strong> : <code class=\"docutils literal notranslate\"><span class=\"pre\">unique_together</span></code> doit être une liste ou un tuple.</p></li>\n<li><p><strong>models.E011</strong>: tous les éléments de <code class=\"docutils literal notranslate\"><span class=\"pre\">unique_together</span></code> doivent être des listes ou des tuples.</p></li>\n<li><p><strong>models.E012</strong> : <code class=\"docutils literal notranslate\"><span class=\"pre\">contrainte/index/index_together/unique_together</span></code> fait référence au champ inexistant <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;nom_de_champ&gt;</span></code>.</p></li>\n<li><p><strong>models.E013</strong> : <code class=\"docutils literal notranslate\"><span class=\"pre\">contrainte/index/index_together/unique_together</span></code> fait référence à un <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;nom_de_champ&gt;</span></code> de type <code class=\"docutils literal notranslate\"><span class=\"pre\">ManyToManyField</span></code>, mais ces champs ne sont pas pris en charge pour cette option.</p></li>\n<li><p><strong>models.E014</strong> : <code class=\"docutils literal notranslate\"><span class=\"pre\">ordering</span></code> doit être un tuple ou une liste (même si vous souhaitez trier sur un seul champ).</p></li>\n<li><p><strong>models.E015</strong> : <code class=\"docutils literal notranslate\"><span class=\"pre\">ordering</span></code> fait référence au champ, champ lié ou recherche inexistant <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;nom_de_champ&gt;</span></code>.</p></li>\n<li><p><strong>models.E016</strong> : <code class=\"docutils literal notranslate\"><span class=\"pre\">contrainte/index/index_together/unique_together</span></code> se réfèrent au champ <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;nom_de_champ&gt;</span></code> qui n’est pas local au modèle <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;modèle&gt;</span></code>.</p></li>\n<li><p><strong>models.E017</strong> : le modèle mandataire <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;modèle&gt;</span></code> contient des champs de modèle.</p></li>\n<li><p><strong>models.E018</strong> : nom de colonne auto-généré trop long pour le champ <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;champ&gt;</span></code>. La longueur maximale est de <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;longueur_maximum&gt;</span></code> pour la base de données <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;alias&gt;</span></code>.</p></li>\n<li><p><strong>models.E019</strong> : nom de colonne auto-généré trop long pour le champ plusieurs-à-plusieurs <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;champ&gt;</span></code>. La longueur maximale est de <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;longueur_maximum&gt;</span></code> pour la base de données <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;alias&gt;</span></code>.</p></li>\n<li><p><strong>models.E020</strong> : La méthode de classe <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;modèle&gt;.check()</span></code> est actuellement surchargée.</p></li>\n<li><p><strong>models.E021</strong> : <code class=\"docutils literal notranslate\"><span class=\"pre\">ordering</span></code> et <code class=\"docutils literal notranslate\"><span class=\"pre\">order_with_respect_to</span></code> ne peuvent pas être utilisés simultanément.</p></li>\n<li><p><strong>models.E022</strong> : <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;fonction&gt;</span></code> contient une référence différée à <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;étiquette_app&gt;.&lt;modèle&gt;</span></code>, mais l’application <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;étiquette_app&gt;</span></code> n’est pas installée ou ne fournit pas de modèle <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;modèle&gt;</span></code>.</p></li>\n<li><p><strong>models.E023</strong> : le nom de modèle <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;modèle&gt;</span></code> ne peut pas commencer ni se terminer par un soulignement car cela entre en conflit avec la syntaxe de requête.</p></li>\n<li><p><strong>models.E024</strong> : le nom de modèle <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;modèle&gt;</span></code> ne peut pas contenir de double soulignement car cela entre en conflit avec la syntaxe de requête.</p></li>\n<li><p><strong>fields.E025</strong> : la propriété <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;nom_de_propriété&gt;</span></code> entre en conflit avec un accesseur de champ lié.</p></li>\n<li><p><strong>models.E026</strong> : le modèle ne peut avoir plus d’un champ avec <code class=\"docutils literal notranslate\"><span class=\"pre\">primary_key=True</span></code>.</p></li>\n<li><p><strong>models.W027</strong>: <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;base</span> <span class=\"pre\">de</span> <span class=\"pre\">données&gt;</span></code> ne prend pas en charge les contraintes de vérification.</p></li>\n<li><p><strong>models.E028</strong>: <code class=\"docutils literal notranslate\"><span class=\"pre\">db_table</span></code> <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;table_bd&gt;</span></code> est utilisée par plusieurs modèles : <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;liste</span> <span class=\"pre\">de</span> <span class=\"pre\">modèles&gt;</span></code>.</p></li>\n<li><p><strong>models.E029</strong> : le nom d’index <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;index&gt;</span></code> n’est pas unique pour le modèle <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;modèle&gt;</span></code>.</p></li>\n<li><p><strong>models.E030</strong> : le nom d’index <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;index&gt;</span></code> n’est pas unique parmi les modèles : <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;liste_modèles&gt;</span></code>.</p></li>\n<li><p><strong>models.E031</strong> : le nom de contrainte <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;contrainte&gt;</span></code> n’est pas unique pour le modèle <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;modèle&gt;</span></code>.</p></li>\n<li><p><strong>models.E032</strong> : le nom de contrainte <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;contrainte&gt;</span></code> n’est pas unique parmi les modèles <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;liste_modèles&gt;</span></code>.</p></li>\n<li><p><strong>models.E033</strong> : le nom d’index <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;index&gt;</span></code> ne peut pas commencer par un soulignement, ni par un nombre.</p></li>\n<li><p><strong>models.E034</strong> : le nom d’index <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;index&gt;</span></code> ne peut pas dépasser <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;max_length&gt;</span></code> caractères.</p></li>\n<li><p><strong>models.W035</strong>: <code class=\"docutils literal notranslate\"><span class=\"pre\">db_table</span></code> <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;table_bd&gt;</span></code> est utilisée par plusieurs modèles : <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;liste</span> <span class=\"pre\">de</span> <span class=\"pre\">modèles&gt;</span></code>.</p></li>\n<li><p><strong>models.W036</strong>: <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;base</span> <span class=\"pre\">de</span> <span class=\"pre\">données&gt;</span></code> ne prend pas en charge les contraintes d’unicité avec conditions.</p></li>\n<li><p><strong>models.W037</strong>: <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;base</span> <span class=\"pre\">de</span> <span class=\"pre\">données&gt;</span></code> ne prend pas en charge les index avec conditions.</p></li>\n<li><p><strong>models.W038</strong>: <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;base</span> <span class=\"pre\">de</span> <span class=\"pre\">données&gt;</span></code> ne prend pas en charge les contraintes d’unicité différables.</p></li>\n<li><p><strong>models.W039</strong>: <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;base</span> <span class=\"pre\">de</span> <span class=\"pre\">données&gt;</span></code> ne prend pas en charge les contraintes d’unicité avec des colonnes qui ne sont pas des clés.</p></li>\n<li><p><strong>models.W040</strong>: <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;base</span> <span class=\"pre\">de</span> <span class=\"pre\">données&gt;</span></code> ne prend pas en charge les index avec des colonnes qui ne sont pas des clés.</p></li>\n<li><p><strong>models.E041</strong> : <code class=\"docutils literal notranslate\"><span class=\"pre\">constraints</span></code> fait référence au champ joint <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;nom_de_champ&gt;</span></code>.</p></li>\n<li><p><strong>models.W042</strong> : clé primaire créée automatiquement sans qu’un type de clé primaire ne soit défini, par défaut  <code class=\"docutils literal notranslate\"><span class=\"pre\">django.db.models.AutoField</span></code>.</p></li>\n<li><p><strong>models.W043</strong>: <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;base</span> <span class=\"pre\">de</span> <span class=\"pre\">données&gt;</span></code> ne prend pas en charge les index sur les expressions.</p></li>\n<li><p><strong>models.W044</strong>: <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;base</span> <span class=\"pre\">de</span> <span class=\"pre\">données&gt;</span></code> ne prend pas en charge les contraintes d’unicité avec les expressions.</p></li>\n<li><p><strong>models.W045</strong> : la contrainte d’intégrité  <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;contrainte&gt;</span></code> contient une expression <code class=\"docutils literal notranslate\"><span class=\"pre\">RawSQL()</span></code> et ne sera pas validée dans la méthode <code class=\"docutils literal notranslate\"><span class=\"pre\">full_clean()</span></code> du modèle.</p></li>\n<li><p><strong>models.W046</strong> : <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;database&gt;</span></code> ne prend pas en charge les commentaires sur les tables (<code class=\"docutils literal notranslate\"><span class=\"pre\">db_table_comment</span></code>).</p></li>\n</ul>\n</section>\n<section id=\"security\">\n<h3>Sécurité<a class=\"heading-anchor\" href=\"#security\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Les contrôles de sécurité ne rendent pas votre site sûr. Ils n’auditent pas votre code, ne font pas de détection d’intrusion ou quoi que ce soit d’autre de particulièrement complexe. Ils s’occupent plutôt d’une liste de contrôles automatisés détectant les problèmes les plus évidents qui peuvent vous aider à améliorer la sécurité d’un site.</p>\n<p>Certains de ces contrôles ne sont pas forcément adéquats pour votre configuration de déploiement particulière. Par exemple, si vous avez délégué la redirection HTTP vers HTTPS à un répartiteur de charge, il serait gênant d’être constamment averti que le réglage <a class=\"reference internal\" href=\"/fr/4.2/ref/settings/#std-setting-SECURE_SSL_REDIRECT\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">SECURE_SSL_REDIRECT</span></code></a> n’est pas actif. Utilisez <a class=\"reference internal\" href=\"/fr/4.2/ref/settings/#std-setting-SILENCED_SYSTEM_CHECKS\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">SILENCED_SYSTEM_CHECKS</span></code></a> pour réduire au silence les contrôles non nécessaires.</p>\n<p>Les contrôles suivants sont exécutés si l’option <a class=\"reference internal\" href=\"/fr/4.2/ref/django-admin/#cmdoption-check-deploy\"><code class=\"xref std std-option docutils literal notranslate\"><span class=\"pre\">check</span> <span class=\"pre\">--deploy</span></code></a> est indiquée :</p>\n<ul class=\"simple\">\n<li><p><strong>security.W001</strong> : l’intergiciel <a class=\"reference internal\" href=\"/fr/4.2/ref/middleware/#django.middleware.security.SecurityMiddleware\" title=\"django.middleware.security.SecurityMiddleware\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">django.middleware.security.SecurityMiddleware</span></code></a> ne figure pas dans <a class=\"reference internal\" href=\"/fr/4.2/ref/settings/#std-setting-MIDDLEWARE\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">MIDDLEWARE</span></code></a> ce qui rendra ineffectif les réglages <a class=\"reference internal\" href=\"/fr/4.2/ref/settings/#std-setting-SECURE_HSTS_SECONDS\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">SECURE_HSTS_SECONDS</span></code></a>, <a class=\"reference internal\" href=\"/fr/4.2/ref/settings/#std-setting-SECURE_CONTENT_TYPE_NOSNIFF\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">SECURE_CONTENT_TYPE_NOSNIFF</span></code></a>, <a class=\"reference internal\" href=\"/fr/4.2/ref/settings/#std-setting-SECURE_REFERRER_POLICY\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">SECURE_REFERRER_POLICY</span></code></a>,  <a class=\"reference internal\" href=\"/fr/4.2/ref/settings/#std-setting-SECURE_CROSS_ORIGIN_OPENER_POLICY\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">SECURE_CROSS_ORIGIN_OPENER_POLICY</span></code></a> et <a class=\"reference internal\" href=\"/fr/4.2/ref/settings/#std-setting-SECURE_SSL_REDIRECT\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">SECURE_SSL_REDIRECT</span></code></a>.</p></li>\n<li><p><strong>security.W002</strong> : l’intergiciel <a class=\"reference internal\" href=\"/fr/4.2/ref/middleware/#django.middleware.clickjacking.XFrameOptionsMiddleware\" title=\"django.middleware.clickjacking.XFrameOptionsMiddleware\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">django.middleware.clickjacking.XFrameOptionsMiddleware</span></code></a> ne figure pas dans <a class=\"reference internal\" href=\"/fr/4.2/ref/settings/#std-setting-MIDDLEWARE\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">MIDDLEWARE</span></code></a>, ce qui fait que vos pages ne seront pas servies avec un en-tête <code class=\"docutils literal notranslate\"><span class=\"pre\">'x-frame-options'</span></code>. Sauf dans les cas où il existe une bonne raison pour que votre site apparaisse dans un cadre, il est recommandé d’activer cet en-tête pour contribuer à prévenir les attaques par détournement de clic.</p></li>\n<li><p><strong>security.W003</strong> : il semble que vous n’utilisiez pas la protection intégrée de Django contre la falsification de requêtes inter-sites avec l’intergiciel dédié (<a class=\"reference internal\" href=\"/fr/4.2/ref/middleware/#django.middleware.csrf.CsrfViewMiddleware\" title=\"django.middleware.csrf.CsrfViewMiddleware\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">django.middleware.csrf.CsrfViewMiddleware</span></code></a> ne figure pas dans <a class=\"reference internal\" href=\"/fr/4.2/ref/settings/#std-setting-MIDDLEWARE\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">MIDDLEWARE</span></code></a>). L’activation de l’intergiciel est l’approche la plus sûre pour s’assurer qu’aucun trou ne subsiste dans cette protection.</p></li>\n<li><p><strong>security.W004</strong> : vous n’avez pas défini de valeur pour le réglage <a class=\"reference internal\" href=\"/fr/4.2/ref/settings/#std-setting-SECURE_HSTS_SECONDS\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">SECURE_HSTS_SECONDS</span></code></a>. Si tout votre site est entièrement servi par SSL, il est possible d’envisager définir une valeur et d’activer <a class=\"reference internal\" href=\"/fr/4.2/ref/middleware/#http-strict-transport-security\"><span class=\"std std-ref\">HSTS (HTTP Strict Transport Security)</span></a>. Mais prenez soin de lire premièrement la documentation ; l’activation précipitée de HSTS peut être la cause de problèmes sérieux et irréversibles.</p></li>\n<li><p><strong>security.W005</strong> : vous n’avez pas défini le réglage <a class=\"reference internal\" href=\"/fr/4.2/ref/settings/#std-setting-SECURE_HSTS_INCLUDE_SUBDOMAINS\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">SECURE_HSTS_INCLUDE_SUBDOMAINS</span></code></a> à <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code>. Sans cela, votre site est potentiellement vulnérable à des attaques via une connexion non sécurisée à un sous-domaine. Ne choisissez la valeur <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code> que si vous êtes sûr que tous les sous-domaines de votre domaine sont exclusivement servis par SSL.</p></li>\n<li><p><strong>security.W006</strong> : le réglage <a class=\"reference internal\" href=\"/fr/4.2/ref/settings/#std-setting-SECURE_CONTENT_TYPE_NOSNIFF\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">SECURE_CONTENT_TYPE_NOSNIFF</span></code></a> n’est pas défini à <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code>, ce qui fait que vos pages ne seront pas servies avec un en-tête <code class=\"docutils literal notranslate\"><span class=\"pre\">'X-Content-Type-Options:</span> <span class=\"pre\">nosniff'</span></code>. Vous devriez envisager d’activer cet en-tête pour empêcher les navigateurs d’identifier de manière incorrecte les types de contenu.</p></li>\n<li><p><strong>security.W007</strong> : le réglage <code class=\"docutils literal notranslate\"><span class=\"pre\">SECURE_BROWSER_XSS_FILTER</span></code> n’est pas défini à <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code>, ce qui fait que vos pages ne seront pas servies avec un en-tête <code class=\"docutils literal notranslate\"><span class=\"pre\">'X-XSS-protection:</span> <span class=\"pre\">1;</span> <span class=\"pre\">mode=block'</span></code>. Vous devriez envisager d’activer cet en-tête pour activer le filtrage XSS des navigateurs et aider ainsi à prévenir les attaques XSS. <em>Ce contrôle a été supprimé dans Django 3.0 car l’en-tête</em> <code class=\"docutils literal notranslate\"><span class=\"pre\">X-XSS-Protection</span></code> <em>n’est plus pris en compte par les navigateurs modernes.</em></p></li>\n<li><p><strong>security.W008</strong> : le réglage <a class=\"reference internal\" href=\"/fr/4.2/ref/settings/#std-setting-SECURE_SSL_REDIRECT\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">SECURE_SSL_REDIRECT</span></code></a> n’est pas défini à <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code>. Sauf si votre site doit être accessible à la fois par des connexions SSL et non SSL, il est conseillé de soit définir ce réglage à <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code>, soit de configurer un répartiteur de charge ou un serveur mandataire inverse pour rediriger toutes les connexions vers HTTPS.</p></li>\n<li><p><strong>security.W009</strong> : la clé secrète <a class=\"reference internal\" href=\"/fr/4.2/ref/settings/#std-setting-SECRET_KEY\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">SECRET_KEY</span></code></a> contient moins de 50 caractères, moins de 5 caractères différents ou est préfixée par <code class=\"docutils literal notranslate\"><span class=\"pre\">'django-insecure-'</span></code>, ce qui indique qu’elle a été générée automatiquement par Django. Veuillez générer une valeur longue et aléatoire, faute de quoi de nombreuses fonctionnalités de Django liées à la sécurité seront vulnérables aux attaques.</p></li>\n<li><p><strong>security.W010</strong> : l’application <a class=\"reference internal\" href=\"/fr/4.2/topics/http/sessions/#module-django.contrib.sessions\" title=\"django.contrib.sessions: Provides session management for Django projects.\"><code class=\"xref py py-mod docutils literal notranslate\"><span class=\"pre\">django.contrib.sessions</span></code></a> se trouve dans votre réglage <a class=\"reference internal\" href=\"/fr/4.2/ref/settings/#std-setting-INSTALLED_APPS\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">INSTALLED_APPS</span></code></a> mais vous n’avez pas défini <a class=\"reference internal\" href=\"/fr/4.2/ref/settings/#std-setting-SESSION_COOKIE_SECURE\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">SESSION_COOKIE_SECURE</span></code></a> à <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code>. L’utilisation d’un cookie de session sécurisé complique la tâche des renifleurs de trafic réseau quand ils essaient de s’immiscer dans les sessions des utilisateurs.</p></li>\n<li><p><strong>security.W011</strong> : <a class=\"reference internal\" href=\"/fr/4.2/ref/middleware/#django.contrib.sessions.middleware.SessionMiddleware\" title=\"django.contrib.sessions.middleware.SessionMiddleware\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">django.contrib.sessions.middleware.SessionMiddleware</span></code></a> figure dans <a class=\"reference internal\" href=\"/fr/4.2/ref/settings/#std-setting-MIDDLEWARE\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">MIDDLEWARE</span></code></a>, mais vous n’avez pas défini <a class=\"reference internal\" href=\"/fr/4.2/ref/settings/#std-setting-SESSION_COOKIE_SECURE\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">SESSION_COOKIE_SECURE</span></code></a> à <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code>. L’utilisation d’un cookie de session sécurisé complique la tâche des renifleurs de trafic réseau quand ils essaient de s’immiscer dans les sessions des utilisateurs.</p></li>\n<li><p><strong>security.W012</strong> : <a class=\"reference internal\" href=\"/fr/4.2/ref/settings/#std-setting-SESSION_COOKIE_SECURE\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">SESSION_COOKIE_SECURE</span></code></a> n’est pas défini à <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code>. L’utilisation d’un cookie de session sécurisé complique la tâche des renifleurs de trafic réseau quand ils essaient de s’immiscer dans les sessions des utilisateurs.</p></li>\n<li><p><strong>security.W013</strong> : l’application <a class=\"reference internal\" href=\"/fr/4.2/topics/http/sessions/#module-django.contrib.sessions\" title=\"django.contrib.sessions: Provides session management for Django projects.\"><code class=\"xref py py-mod docutils literal notranslate\"><span class=\"pre\">django.contrib.sessions</span></code></a> se trouve dans votre réglage <a class=\"reference internal\" href=\"/fr/4.2/ref/settings/#std-setting-INSTALLED_APPS\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">INSTALLED_APPS</span></code></a> mais vous n’avez pas défini <a class=\"reference internal\" href=\"/fr/4.2/ref/settings/#std-setting-SESSION_COOKIE_HTTPONLY\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">SESSION_COOKIE_HTTPONLY</span></code></a> à <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code>. L’utilisation d’un cookie de session <code class=\"docutils literal notranslate\"><span class=\"pre\">HttpOnly</span></code> complique la tâche des attaques par script inter-site quand elles essaient de s’immiscer dans les sessions des utilisateurs.</p></li>\n<li><p><strong>security.W014</strong> : <a class=\"reference internal\" href=\"/fr/4.2/ref/middleware/#django.contrib.sessions.middleware.SessionMiddleware\" title=\"django.contrib.sessions.middleware.SessionMiddleware\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">django.contrib.sessions.middleware.SessionMiddleware</span></code></a> figure dans <a class=\"reference internal\" href=\"/fr/4.2/ref/settings/#std-setting-MIDDLEWARE\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">MIDDLEWARE</span></code></a>, mais vous n’avez pas défini <a class=\"reference internal\" href=\"/fr/4.2/ref/settings/#std-setting-SESSION_COOKIE_HTTPONLY\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">SESSION_COOKIE_HTTPONLY</span></code></a> à <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code>. L’utilisation d’un cookie de session <code class=\"docutils literal notranslate\"><span class=\"pre\">HttpOnly</span></code> complique la tâche des attaques par script inter-site quand elles essaient de s’immiscer dans les sessions des utilisateurs.</p></li>\n<li><p><strong>security.W015</strong> : <a class=\"reference internal\" href=\"/fr/4.2/ref/settings/#std-setting-SESSION_COOKIE_HTTPONLY\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">SESSION_COOKIE_HTTPONLY</span></code></a> n’est pas défini à <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code>. L’utilisation d’un cookie de session <code class=\"docutils literal notranslate\"><span class=\"pre\">HttpOnly</span></code> complique la tâche des attaques par script inter-site quand elles essaient de s’immiscer dans les sessions des utilisateurs.</p></li>\n<li><p><strong>security.W016</strong> : <a class=\"reference internal\" href=\"/fr/4.2/ref/settings/#std-setting-CSRF_COOKIE_SECURE\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">CSRF_COOKIE_SECURE</span></code></a> n’est pas défini à <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code>. L’utilisation d’un cookie CSRF sécurisé complique la tâche des renifleurs de trafic réseau quand ils essaient de voler le jeton CSRF.</p></li>\n<li><p><strong>security.W017</strong> : <a class=\"reference internal\" href=\"/fr/4.2/ref/settings/#std-setting-CSRF_COOKIE_HTTPONLY\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">CSRF_COOKIE_HTTPONLY</span></code></a> n’est pas défini à <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code>. L’utilisation d’un cookie CSRF <code class=\"docutils literal notranslate\"><span class=\"pre\">HttpOnly</span></code> complique la tâche des attaques par script inter-site quand elles essaient de voler le jeton CSRF. <em>Ce contrôle est supprimé dans Django 1.11 car le réglage</em> <a class=\"reference internal\" href=\"/fr/4.2/ref/settings/#std-setting-CSRF_COOKIE_HTTPONLY\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">CSRF_COOKIE_HTTPONLY</span></code></a> <em>n’offre aucun bénéfice concret.</em></p></li>\n<li><p><strong>security.W018</strong> : le réglage <a class=\"reference internal\" href=\"/fr/4.2/ref/settings/#std-setting-DEBUG\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">DEBUG</span></code></a> ne devrait pas être défini à <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code> pour une application Django déployée.</p></li>\n<li><p><strong>security.W019</strong> : <a class=\"reference internal\" href=\"/fr/4.2/ref/middleware/#django.middleware.clickjacking.XFrameOptionsMiddleware\" title=\"django.middleware.clickjacking.XFrameOptionsMiddleware\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">django.middleware.clickjacking.XFrameOptionsMiddleware</span></code></a> figure dans <a class=\"reference internal\" href=\"/fr/4.2/ref/settings/#std-setting-MIDDLEWARE\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">MIDDLEWARE</span></code></a>, mais <a class=\"reference internal\" href=\"/fr/4.2/ref/settings/#std-setting-X_FRAME_OPTIONS\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">X_FRAME_OPTIONS</span></code></a> n’est pas défini à <code class=\"docutils literal notranslate\"><span class=\"pre\">'DENY'</span></code>. Sauf dans les cas où un site a une bonne raison de servir certaines de ses parties dans un cadre, vous devriez modifier ce réglage à <code class=\"docutils literal notranslate\"><span class=\"pre\">'DENY'</span></code>.</p></li>\n<li><p><strong>security.W020</strong> : le réglage <a class=\"reference internal\" href=\"/fr/4.2/ref/settings/#std-setting-ALLOWED_HOSTS\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">ALLOWED_HOSTS</span></code></a> ne peut pas être vide en déploiement.</p></li>\n<li><p><strong>security.W021</strong> : vous n’avez pas défini le réglage <a class=\"reference internal\" href=\"/fr/4.2/ref/settings/#std-setting-SECURE_HSTS_PRELOAD\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">SECURE_HSTS_PRELOAD</span></code></a> à <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code>. Sans cela, votre site ne peut pas être proposé à la liste de préchargement des navigateurs.</p></li>\n<li><p><strong>security.W022</strong> : vous n’avez pas défini le réglage <a class=\"reference internal\" href=\"/fr/4.2/ref/settings/#std-setting-SECURE_REFERRER_POLICY\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">SECURE_REFERRER_POLICY</span></code></a>. Sans cela, votre site n’enverra pas d’en-tête Referrer-Policy. Vous devriez envisager d’activer cet en-tête pour protéger la confidentialité des utilisateurs.</p></li>\n<li><p><strong>security.E023</strong> : la valeur contenue dans le réglage <a class=\"reference internal\" href=\"/fr/4.2/ref/settings/#std-setting-SECURE_REFERRER_POLICY\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">SECURE_REFERRER_POLICY</span></code></a> n’est pas valable.</p></li>\n<li><p><strong>security.E024</strong> : la valeur contenue dans le réglage <a class=\"reference internal\" href=\"/fr/4.2/ref/settings/#std-setting-SECURE_CROSS_ORIGIN_OPENER_POLICY\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">SECURE_CROSS_ORIGIN_OPENER_POLICY</span></code></a> n’est pas valable.</p></li>\n<li><p><strong>security.W025</strong> : la clé <a class=\"reference internal\" href=\"/fr/4.2/ref/settings/#std-setting-SECRET_KEY_FALLBACKS\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">SECRET_KEY_FALLBACKS[n]</span></code></a> contient moins de 50 caractères, moins de 5 caractères différents ou est préfixée par <code class=\"docutils literal notranslate\"><span class=\"pre\">'django-insecure-'</span></code>, ce qui indique qu’elle a été générée automatiquement par Django. Veuillez générer une valeur longue et aléatoire, faute de quoi de nombreuses fonctionnalités de Django liées à la sécurité seront vulnérables aux attaques.</p></li>\n</ul>\n<p>Les contrôles suivants vérifient que les réglages liés à la sécurité sont correctement configurés :</p>\n<ul class=\"simple\">\n<li><p><strong>security.E100</strong> : <code class=\"docutils literal notranslate\"><span class=\"pre\">DEFAULT_HASHING_ALGORITHM</span></code> doit contenir <code class=\"docutils literal notranslate\"><span class=\"pre\">'sha1'</span></code> ou <code class=\"docutils literal notranslate\"><span class=\"pre\">'sha256'</span></code>. <em>Ce contrôle est apparu dans Django 3.1 et 3.2</em>.</p></li>\n<li><p><strong>security.E101</strong> : la vue d’échec CSRF <code class=\"docutils literal notranslate\"><span class=\"pre\">chemin.vers.vue</span></code> n’accepte pas le bon nombre d’arguments.</p></li>\n<li><p><strong>security.E102</strong> : la vue d’échec CSRF <code class=\"docutils literal notranslate\"><span class=\"pre\">chemin.vers.vue</span></code> n’a pas pu être importée.</p></li>\n</ul>\n</section>\n<section id=\"signals\">\n<h3>Signaux<a class=\"heading-anchor\" href=\"#signals\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<ul class=\"simple\">\n<li><p><strong>signals.E001</strong> : <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;gestionnaire&gt;</span></code> est connecté au signal <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;signal&gt;</span></code> avec une référence différée vers l’expéditeur <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;étiquette</span> <span class=\"pre\">app&gt;.&lt;modèle&gt;</span></code>, mais <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;étiquette</span> <span class=\"pre\">app&gt;</span></code> n’est pas installé ou ne fournit pas le modèle <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;modèle&gt;</span></code>.</p></li>\n</ul>\n</section>\n<section id=\"templates\">\n<h3>Gabarits<a class=\"heading-anchor\" href=\"#templates\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Les contrôles suivants vérifient que le réglage <a class=\"reference internal\" href=\"/fr/4.2/ref/settings/#std-setting-TEMPLATES\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">TEMPLATES</span></code></a> est configuré correctement :</p>\n<ul class=\"simple\">\n<li><p><strong>templates.E001</strong> : <code class=\"docutils literal notranslate\"><span class=\"pre\">'APP_DIRS':</span> <span class=\"pre\">True</span></code> figure dans votre réglage <a class=\"reference internal\" href=\"/fr/4.2/ref/settings/#std-setting-TEMPLATES\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">TEMPLATES</span></code></a> mais <code class=\"docutils literal notranslate\"><span class=\"pre\">'loaders'</span></code> est aussi dans <code class=\"docutils literal notranslate\"><span class=\"pre\">OPTIONS</span></code>. Supprimez <code class=\"docutils literal notranslate\"><span class=\"pre\">APP_DIRS</span></code> ou l’option <code class=\"docutils literal notranslate\"><span class=\"pre\">'loaders'</span></code>.</p></li>\n<li><p><strong>templates.E002</strong> : <code class=\"docutils literal notranslate\"><span class=\"pre\">string_if_invalid</span></code> dans <a class=\"reference internal\" href=\"/fr/4.2/ref/settings/#std-setting-TEMPLATES\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">TEMPLATES</span></code></a> <a class=\"reference internal\" href=\"/fr/4.2/ref/settings/#std-setting-TEMPLATES-OPTIONS\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">OPTIONS</span></code></a> doit être une chaîne, mais c’est actuellement : <code class=\"docutils literal notranslate\"><span class=\"pre\">{valeur}</span></code> (<code class=\"docutils literal notranslate\"><span class=\"pre\">{type}</span></code>).</p></li>\n<li><p><strong>templates.E003</strong>: <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;name&gt;</span></code> est utilisé pour plusieurs modules de balises de gabarits: <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;module</span> <span class=\"pre\">list&gt;</span></code>. <em>Ce contrôle a été modifié en</em> <code class=\"docutils literal notranslate\"><span class=\"pre\">templates.W003</span></code> <em>dans Django 4.1.2</em>.</p></li>\n<li><p><strong>templates.W003</strong> : <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;name&gt;</span></code> est utilisé pour plusieurs modules de balises de gabarits : <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;module</span> <span class=\"pre\">list&gt;</span></code>.</p></li>\n</ul>\n</section>\n<section id=\"translation\">\n<h3>Traduction<a class=\"heading-anchor\" href=\"#translation\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Les contrôles suivants sont effectués sur votre configuration de traduction :</p>\n<ul class=\"simple\">\n<li><p><strong>translation.E001</strong>: le réglage <a class=\"reference internal\" href=\"/fr/4.2/ref/settings/#std-setting-LANGUAGE_CODE\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">LANGUAGE_CODE</span></code></a> contient une valeur non valide : <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;valeur&gt;</span></code>.</p></li>\n<li><p><strong>translation.E002</strong> : le code de langue contenu dans le réglage <a class=\"reference internal\" href=\"/fr/4.2/ref/settings/#std-setting-LANGUAGES\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">LANGUAGES</span></code></a> n’est pas valable : <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;valeur&gt;</span></code>.</p></li>\n<li><p><strong>translation.E003</strong> : le code de langue contenu dans le réglage <a class=\"reference internal\" href=\"/fr/4.2/ref/settings/#std-setting-LANGUAGES_BIDI\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">LANGUAGES_BIDI</span></code></a> n’est pas valable : <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;valeur&gt;</span></code>.</p></li>\n<li><p><strong>translation.E004</strong>: la valeur contenue dans le réglage <a class=\"reference internal\" href=\"/fr/4.2/ref/settings/#std-setting-LANGUAGE_CODE\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">LANGUAGE_CODE</span></code></a> n’est pas présente dans le réglage <a class=\"reference internal\" href=\"/fr/4.2/ref/settings/#std-setting-LANGUAGES\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">LANGUAGES</span></code></a>.</p></li>\n</ul>\n</section>\n<section id=\"urls\">\n<h3>URL<a class=\"heading-anchor\" href=\"#urls\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Les contrôles suivants sont effectués sur votre configuration d’URL :</p>\n<ul class=\"simple\">\n<li><p><strong>urls.W001</strong> : le motif d’URL <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;pattern&gt;</span></code> utilise <a class=\"reference internal\" href=\"/fr/4.2/ref/urls/#django.urls.include\" title=\"django.urls.include\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">include()</span></code></a> avec une expression <code class=\"docutils literal notranslate\"><span class=\"pre\">route</span></code> se terminant par <code class=\"docutils literal notranslate\"><span class=\"pre\">$</span></code>. Enlevez le dollar de l’expression <code class=\"docutils literal notranslate\"><span class=\"pre\">route</span></code> pour éviter des problèmes lors de l’inclusion d’URL.</p></li>\n<li><p><strong>urls.W002</strong> : le motif d’URL <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;pattern&gt;</span></code> possède une expression <code class=\"docutils literal notranslate\"><span class=\"pre\">route</span></code> commençant par <code class=\"docutils literal notranslate\"><span class=\"pre\">/</span></code>. Enlevez cette barre oblique car elle n’est pas nécessaire. Si ce motif est référencé par un <a class=\"reference internal\" href=\"/fr/4.2/ref/urls/#django.urls.include\" title=\"django.urls.include\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">include()</span></code></a>, vérifiez que le motif <a class=\"reference internal\" href=\"/fr/4.2/ref/urls/#django.urls.include\" title=\"django.urls.include\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">include()</span></code></a> se termine par <code class=\"docutils literal notranslate\"><span class=\"pre\">/</span></code>.</p></li>\n<li><p><strong>urls.W003</strong> : le motif d’URL <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;pattern&gt;</span></code> possède un nom <code class=\"docutils literal notranslate\"><span class=\"pre\">name</span></code> contenant un <code class=\"docutils literal notranslate\"><span class=\"pre\">:</span></code>. Enlevez ces deux-points pour éviter des références d’espaces de noms ambigus.</p></li>\n<li><p><strong>urls.E004</strong> : le motif d’URL <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;motif&gt;</span></code> n’est pas valide. Vérifiez que <code class=\"docutils literal notranslate\"><span class=\"pre\">urlpatterns</span></code> est bien une liste d’instances <a class=\"reference internal\" href=\"/fr/4.2/ref/urls/#django.urls.path\" title=\"django.urls.path\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">path()</span></code></a> ou <a class=\"reference internal\" href=\"/fr/4.2/ref/urls/#django.urls.re_path\" title=\"django.urls.re_path\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">re_path()</span></code></a>.</p></li>\n<li><p><strong>urls.W005</strong> : l’espace de noms d’URL <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;espace</span> <span class=\"pre\">de</span> <span class=\"pre\">nom&gt;</span></code> n’est pas unique. Il est possible que certains URL de cet espace de noms ne puissent pas être résolus.</p></li>\n<li><p><strong>urls.E006</strong> : les réglages <a class=\"reference internal\" href=\"/fr/4.2/ref/settings/#std-setting-MEDIA_URL\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">MEDIA_URL</span></code></a>/ <a class=\"reference internal\" href=\"/fr/4.2/ref/settings/#std-setting-STATIC_URL\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">STATIC_URL</span></code></a> doivent se terminer par une barre oblique.</p></li>\n<li><p><strong>urls.E007</strong>: la vue <code class=\"docutils literal notranslate\"><span class=\"pre\">handlerXXX</span></code> personnalisée <code class=\"docutils literal notranslate\"><span class=\"pre\">'chemin.vers.vue'</span></code> ne prend pas le nombre correct de paramètres (…).</p></li>\n<li><p><strong>urls.E008</strong> : la vue <code class=\"docutils literal notranslate\"><span class=\"pre\">handlerXXX</span></code> personnalisée <code class=\"docutils literal notranslate\"><span class=\"pre\">'chemin.vers.vue'</span></code> n’a pas pu être importée.</p></li>\n<li><p><strong>urls.E009</strong> : le motif d’URL <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;motif&gt;</span></code> possède un vue non valable, passez <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;vue&gt;.as_view()</span></code> au lieu de <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;vue&gt;</span></code>.</p></li>\n</ul>\n</section>\n</section>\n<section id=\"contrib-app-checks\">\n<h2>Contrôles des applications <code class=\"docutils literal notranslate\"><span class=\"pre\">contrib</span></code><a class=\"heading-anchor\" href=\"#contrib-app-checks\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h2>\n<section id=\"admin\">\n<h3><code class=\"docutils literal notranslate\"><span class=\"pre\">admin</span></code><a class=\"heading-anchor\" href=\"#admin\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Les contrôles de l’interface d’administration sont tous effectués sous l’étiquette <code class=\"docutils literal notranslate\"><span class=\"pre\">admin</span></code>.</p>\n<p>Les contrôles suivants sont effectués sur toute classe (ou sous-classe de) <a class=\"reference internal\" href=\"/fr/4.2/ref/contrib/admin/#django.contrib.admin.ModelAdmin\" title=\"django.contrib.admin.ModelAdmin\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">ModelAdmin</span></code></a> qui est inscrite auprès du site d’administration :</p>\n<ul class=\"simple\">\n<li><p><strong>admin.E001</strong> : la valeur de <code class=\"docutils literal notranslate\"><span class=\"pre\">raw_id_fields</span></code> doit être une liste ou un tuple.</p></li>\n<li><p><strong>admin.E002</strong> : la valeur de <code class=\"docutils literal notranslate\"><span class=\"pre\">raw_id_fields[n]</span></code> fait référence à <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;nom_de_champ&gt;</span></code>, qui n’est pas un champ de <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;modèle&gt;</span></code>.</p></li>\n<li><p><strong>admin.E003</strong> : la valeur de <code class=\"docutils literal notranslate\"><span class=\"pre\">raw_id_fields[n]</span></code> doit être une clé étrangère ou un champ plusieurs-à-plusieurs.</p></li>\n<li><p><strong>admin.E004</strong> : la valeur de <code class=\"docutils literal notranslate\"><span class=\"pre\">fields</span></code> doit être une liste ou un tuple.</p></li>\n<li><p><strong>admin.E005</strong> : <code class=\"docutils literal notranslate\"><span class=\"pre\">fieldsets</span></code> et <code class=\"docutils literal notranslate\"><span class=\"pre\">fields</span></code> sont tous deux spécifiés.</p></li>\n<li><p><strong>admin.E006</strong> : la valeur de <code class=\"docutils literal notranslate\"><span class=\"pre\">fields</span></code> contient des champs en double.</p></li>\n<li><p><strong>admin.E007</strong> : la valeur de <code class=\"docutils literal notranslate\"><span class=\"pre\">fieldsets</span></code> doit être une liste ou un tuple.</p></li>\n<li><p><strong>admin.E008</strong> : la valeur de <code class=\"docutils literal notranslate\"><span class=\"pre\">fieldsets[n]</span></code> doit être une liste ou un tuple.</p></li>\n<li><p><strong>admin.E009</strong> : la valeur de <code class=\"docutils literal notranslate\"><span class=\"pre\">fieldsets[n]</span></code> doit être de longueur 2.</p></li>\n<li><p><strong>admin.E010</strong> : la valeur de <code class=\"docutils literal notranslate\"><span class=\"pre\">fieldsets[n][1]</span></code> doit être un dictionnaire.</p></li>\n<li><p><strong>admin.E011</strong> : la valeur de <code class=\"docutils literal notranslate\"><span class=\"pre\">fieldsets[n][1]</span></code> doit contenir la clé <code class=\"docutils literal notranslate\"><span class=\"pre\">fields</span></code>.</p></li>\n<li><p><strong>admin.E012</strong> : il y a des champs en double dans <code class=\"docutils literal notranslate\"><span class=\"pre\">fieldsets[n][1]</span></code>.</p></li>\n<li><p><strong>admin.E013</strong> : la valeur de <code class=\"docutils literal notranslate\"><span class=\"pre\">fields[n]/fieldsets[n][m]</span></code> ne peut pas inclure le champ <code class=\"docutils literal notranslate\"><span class=\"pre\">ManyToManyField</span></code> <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;nom_de_champ&gt;</span></code>, car ce champ définit manuellement un modèle de relation.</p></li>\n<li><p><strong>admin.E014</strong> : la valeur de <code class=\"docutils literal notranslate\"><span class=\"pre\">exclude</span></code> doit être une liste ou un tuple.</p></li>\n<li><p><strong>admin.E015</strong> : la valeur de <code class=\"docutils literal notranslate\"><span class=\"pre\">exclude</span></code> contient des champs en double.</p></li>\n<li><p><strong>admin.E016</strong> : la valeur de <code class=\"docutils literal notranslate\"><span class=\"pre\">form</span></code> doit hériter de <code class=\"docutils literal notranslate\"><span class=\"pre\">BaseModelForm</span></code>.</p></li>\n<li><p><strong>admin.E017</strong> : la valeur de <code class=\"docutils literal notranslate\"><span class=\"pre\">filter_vertical</span></code> doit être une liste ou un tuple.</p></li>\n<li><p><strong>admin.E018</strong> : la valeur de <code class=\"docutils literal notranslate\"><span class=\"pre\">filter_horizontal</span></code> doit être une liste ou un tuple.</p></li>\n<li><p><strong>admin.E019</strong> : la valeur de <code class=\"docutils literal notranslate\"><span class=\"pre\">filter_vertical[n]/filter_horizontall[n]</span></code> fait référence à <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;nom_de_champ&gt;</span></code>, qui n’est pas un champ de <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;modèle&gt;</span></code>.</p></li>\n<li><p><strong>admin.E020</strong> : la valeur de <code class=\"docutils literal notranslate\"><span class=\"pre\">filter_vertical[n]/filter_horizontal[n]</span></code> doit être un champ plusieurs-à-plusieurs.</p></li>\n<li><p><strong>admin.E021</strong> : la valeur de <code class=\"docutils literal notranslate\"><span class=\"pre\">radio_fields</span></code> doit être un dictionnaire.</p></li>\n<li><p><strong>admin.E022</strong> : la valeur de <code class=\"docutils literal notranslate\"><span class=\"pre\">radio_fields</span></code> fait référence à <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;nom_de_champ&gt;</span></code>, qui n’est pas un champ de <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;modèle&gt;</span></code>.</p></li>\n<li><p><strong>admin.E023</strong> : la valeur de <code class=\"docutils literal notranslate\"><span class=\"pre\">radio_fields</span></code> fait référence à <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;nom_de_champ&gt;</span></code>, qui n’est pas une instance de clé <code class=\"docutils literal notranslate\"><span class=\"pre\">ForeignKey</span></code> et n’a pas de définition <code class=\"docutils literal notranslate\"><span class=\"pre\">choices</span></code>.</p></li>\n<li><p><strong>admin.E024</strong> : la valeur de <code class=\"docutils literal notranslate\"><span class=\"pre\">radio_fields[&lt;nom_de_champ&gt;]</span></code> doit être soit <code class=\"docutils literal notranslate\"><span class=\"pre\">admin.HORIZONTAL</span></code> soit <code class=\"docutils literal notranslate\"><span class=\"pre\">admin.VERTICAL</span></code>.</p></li>\n<li><p><strong>admin.E025</strong> : la valeur de <code class=\"docutils literal notranslate\"><span class=\"pre\">view_on_site</span></code> doit être soit un objet exécutable, soit une valeur booléenne.</p></li>\n<li><p><strong>admin.E026</strong> : la valeur de <code class=\"docutils literal notranslate\"><span class=\"pre\">prepopulated_fields</span></code> doit être un dictionnaire.</p></li>\n<li><p><strong>admin.E027</strong> : la valeur de <code class=\"docutils literal notranslate\"><span class=\"pre\">prepopulated_fields</span></code> fait référence à <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;nom_de_champ&gt;</span></code>, qui n’est pas un champ de <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;modèle&gt;</span></code>.</p></li>\n<li><p><strong>admin.E028</strong> : la valeur de <code class=\"docutils literal notranslate\"><span class=\"pre\">prepopulated_fields</span></code> fait référence à <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;nom_de_champ&gt;</span></code>, qui ne doit pas être un champ <code class=\"docutils literal notranslate\"><span class=\"pre\">DateTimeField</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">ForeignKey</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">OneToOneField</span></code> ni <code class=\"docutils literal notranslate\"><span class=\"pre\">ManyToManyField</span></code>.</p></li>\n<li><p><strong>admin.E029</strong> : la valeur de <code class=\"docutils literal notranslate\"><span class=\"pre\">prepopulated_fields[&lt;nom_de_champ&gt;]</span></code> doit être une liste ou un tuple.</p></li>\n<li><p><strong>admin.E030</strong> : la valeur de <code class=\"docutils literal notranslate\"><span class=\"pre\">prepopulated_fields</span></code> fait référence à <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;nom_de_champ&gt;</span></code>, qui n’est pas un champ de <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;modèle&gt;</span></code>.</p></li>\n<li><p><strong>admin.E031</strong> : la valeur de <code class=\"docutils literal notranslate\"><span class=\"pre\">ordering</span></code> doit être une liste ou un tuple.</p></li>\n<li><p><strong>admin.E032</strong> : la valeur de <code class=\"docutils literal notranslate\"><span class=\"pre\">ordering</span></code> a le marqueur d’ordre aléatoire <code class=\"docutils literal notranslate\"><span class=\"pre\">?</span></code>, mais contient aussi d’autres champs.</p></li>\n<li><p><strong>admin.E033</strong> : la valeur de <code class=\"docutils literal notranslate\"><span class=\"pre\">ordering</span></code> fait référence à <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;nom_de_champ&gt;</span></code>, qui n’est pas un champ de <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;modèle&gt;</span></code>.</p></li>\n<li><p><strong>admin.E034</strong> : la valeur de <code class=\"docutils literal notranslate\"><span class=\"pre\">readonly_fields</span></code> doit être une liste ou un tuple.</p></li>\n<li><p><strong>admin.E035</strong>: La valeur de <code class=\"docutils literal notranslate\"><span class=\"pre\">readonly_fields[n]</span></code> n’est pas appelable, un attribut de <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;ModelAdmin</span> <span class=\"pre\">class&gt;</span></code>, ou un attribut de <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;model&gt;</span></code>.</p></li>\n<li><p><strong>admin.E036</strong> : la valeur de <code class=\"docutils literal notranslate\"><span class=\"pre\">autocomplete_fields</span></code> doit être une liste ou un tuple.</p></li>\n<li><p><strong>admin.E037</strong> : la valeur de <code class=\"docutils literal notranslate\"><span class=\"pre\">autocomplete_fields[n]</span></code> fait référence à <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;nom_de_champ&gt;</span></code>, qui n’est pas un champ de <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;modèle&gt;</span></code>.</p></li>\n<li><p><strong>admin.E038</strong> : la valeur de <code class=\"docutils literal notranslate\"><span class=\"pre\">autocomplete_fields[n]</span></code> doit être une clé étrangère ou un champ plusieurs-à-plusieurs.</p></li>\n<li><p><strong>admin.E039</strong> : une classe admin du modèle <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;modèle&gt;</span></code> doit être inscrite pour être référencée par <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;modeladmin&gt;.autocomplete_fields</span></code>.</p></li>\n<li><p><strong>admin.E040</strong> : <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;modeladmin&gt;</span></code> doit définir <code class=\"docutils literal notranslate\"><span class=\"pre\">search_fields</span></code> car il est référencé par <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;autre_modeladmin&gt;.autocomplete_fields</span></code> .</p></li>\n</ul>\n<section id=\"modeladmin\">\n<h4><code class=\"docutils literal notranslate\"><span class=\"pre\">ModelAdmin</span></code><a class=\"heading-anchor\" href=\"#modeladmin\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>Les contrôles suivants sont effectués sur toute classes (ou sous-classe de) <a class=\"reference internal\" href=\"/fr/4.2/ref/contrib/admin/#django.contrib.admin.ModelAdmin\" title=\"django.contrib.admin.ModelAdmin\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">ModelAdmin</span></code></a> qui est enregistrée auprès du site d’administration:</p>\n<ul class=\"simple\">\n<li><p><strong>admin.E101</strong>: La valeur de <code class=\"docutils literal notranslate\"><span class=\"pre\">save_as</span></code> doit être un booléen.</p></li>\n<li><p><strong>admin.E102</strong>: La valeur de <code class=\"docutils literal notranslate\"><span class=\"pre\">save_on_top</span></code> doit être un booléen.</p></li>\n<li><p><strong>admin.E103</strong>: La valeur de <code class=\"docutils literal notranslate\"><span class=\"pre\">inlines</span></code> doit être une liste ou un tuple.</p></li>\n<li><p><strong>admin.E104</strong> : <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;InlineModelAdmin</span> <span class=\"pre\">class&gt;</span></code> doit hériter de <code class=\"docutils literal notranslate\"><span class=\"pre\">InlineModelAdmin</span></code>.</p></li>\n<li><p><strong>admin.E105</strong>: <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;InlineModelAdmin</span> <span class=\"pre\">class&gt;</span></code> doit avoir un attribut <code class=\"docutils literal notranslate\"><span class=\"pre\">model</span></code>.</p></li>\n<li><p><strong>admin.E106</strong>: La valeur de <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;InlineModelAdmin</span> <span class=\"pre\">class&gt;.model</span></code> doit être un <code class=\"docutils literal notranslate\"><span class=\"pre\">Model</span></code>.</p></li>\n<li><p><strong>admin.E107</strong>: La valeur de <code class=\"docutils literal notranslate\"><span class=\"pre\">list_display</span></code> doit être une liste ou un tuple.</p></li>\n<li><p><strong>admin.E108</strong> : la valeur de <code class=\"docutils literal notranslate\"><span class=\"pre\">list_display[n]</span></code> fait référence à <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;label&gt;</span></code>, qui n’est pas un objet exécutable, un attribut de <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;classe</span> <span class=\"pre\">ModelAdmin&gt;</span></code>, ni un attribut ou une méthode de <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;modèle&gt;</span></code>.</p></li>\n<li><p><strong>admin.E109</strong> : la valeur de <code class=\"docutils literal notranslate\"><span class=\"pre\">list_display[n]</span></code> ne peut pas être un champ <code class=\"docutils literal notranslate\"><span class=\"pre\">ManyToManyField</span></code>.</p></li>\n<li><p><strong>admin.E110</strong> : La valeur de <code class=\"docutils literal notranslate\"><span class=\"pre\">list_display_links</span></code> doit être une liste, un tuple ou <code class=\"docutils literal notranslate\"><span class=\"pre\">None</span></code>.</p></li>\n<li><p><strong>admin.E111</strong> : la valeur de <code class=\"docutils literal notranslate\"><span class=\"pre\">list_display_links[n]</span></code> fait référence à <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;label&gt;</span></code>, qui n’est pas défini dans <code class=\"docutils literal notranslate\"><span class=\"pre\">list_display</span></code>.</p></li>\n<li><p><strong>admin.E112</strong> : La valeur de <code class=\"docutils literal notranslate\"><span class=\"pre\">list_filter</span></code> doit être une liste ou un tuple.</p></li>\n<li><p><strong>admin.E113</strong> : la valeur de <code class=\"docutils literal notranslate\"><span class=\"pre\">list_filter[n]</span></code> doit hériter de <code class=\"docutils literal notranslate\"><span class=\"pre\">ListFilter</span></code>.</p></li>\n<li><p><strong>admin.E114</strong> : la valeur de <code class=\"docutils literal notranslate\"><span class=\"pre\">list_filter[n]</span></code> ne doit pas hériter de <code class=\"docutils literal notranslate\"><span class=\"pre\">FieldListFilter</span></code>.</p></li>\n<li><p><strong>admin.E115</strong> : la valeur de <code class=\"docutils literal notranslate\"><span class=\"pre\">list_filter[n][1]</span></code> doit hériter de <code class=\"docutils literal notranslate\"><span class=\"pre\">FieldListFilter</span></code>.</p></li>\n<li><p><strong>admin.E116</strong> : la valeur de <code class=\"docutils literal notranslate\"><span class=\"pre\">list_filter[n]</span></code> fait référence à <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;label&gt;</span></code>, qui ne fait pas référence à un champ <code class=\"docutils literal notranslate\"><span class=\"pre\">Field</span></code>.</p></li>\n<li><p><strong>admin.E117</strong> : la valeur de <code class=\"docutils literal notranslate\"><span class=\"pre\">list_select_related</span></code> doit être une valeur booléenne, un tuple ou une liste.</p></li>\n<li><p><strong>admin.E118</strong> : la valeur de <code class=\"docutils literal notranslate\"><span class=\"pre\">list_per_page</span></code> doit être un nombre entier.</p></li>\n<li><p><strong>admin.E119</strong> : la valeur de <code class=\"docutils literal notranslate\"><span class=\"pre\">list_max_show_all</span></code> doit être un nombre entier.</p></li>\n<li><p><strong>admin.E120</strong> : la valeur de <code class=\"docutils literal notranslate\"><span class=\"pre\">list_editable</span></code> doit être une liste ou un tuple.</p></li>\n<li><p><strong>admin.E121</strong> : la valeur de <code class=\"docutils literal notranslate\"><span class=\"pre\">list_editable[n]</span></code> fait référence à <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;label&gt;</span></code>, qui n’est pas un champ de <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;modèle&gt;</span></code>.</p></li>\n<li><p><strong>admin.E122</strong> : la valeur de <code class=\"docutils literal notranslate\"><span class=\"pre\">list_editable[n]</span></code> fait référence à <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;label&gt;</span></code>, qui ne figure pas dans <code class=\"docutils literal notranslate\"><span class=\"pre\">list_display</span></code>.</p></li>\n<li><p><strong>admin.E123</strong> : la valeur de <code class=\"docutils literal notranslate\"><span class=\"pre\">list_editable[n]</span></code> ne peut pas être à la fois dans <code class=\"docutils literal notranslate\"><span class=\"pre\">list_editable</span></code> et dans  <code class=\"docutils literal notranslate\"><span class=\"pre\">list_display_links</span></code>.</p></li>\n<li><p><strong>admin.E124</strong> : la valeur de <code class=\"docutils literal notranslate\"><span class=\"pre\">list_editable[n]</span></code> fait référence au tout premier champ dans <code class=\"docutils literal notranslate\"><span class=\"pre\">list_display</span></code> (<code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;label&gt;</span></code>), qui ne peut pas utilisé tant que <code class=\"docutils literal notranslate\"><span class=\"pre\">list_display_links</span></code> n’est pas défini.</p></li>\n<li><p><strong>admin.E125</strong> : la valeur de <code class=\"docutils literal notranslate\"><span class=\"pre\">list_editable[n]</span></code> fait référence à <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;nom_de_champ&gt;</span></code>, qui n’est pas modifiable dans l’interface d’administration.</p></li>\n<li><p><strong>admin.E126</strong> : La valeur de <code class=\"docutils literal notranslate\"><span class=\"pre\">search_fields</span></code> doit être une liste ou un tuple.</p></li>\n<li><p><strong>admin.E127</strong> : la valeur de <code class=\"docutils literal notranslate\"><span class=\"pre\">date_hierarchy</span></code> fait référence à <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;nom_de_champ&gt;</span></code>, qui ne se réfère pas à un champ.</p></li>\n<li><p><strong>admin.E128</strong> : la valeur de <code class=\"docutils literal notranslate\"><span class=\"pre\">date_hierarchy</span></code> doit être un champ <code class=\"docutils literal notranslate\"><span class=\"pre\">DateField</span></code> ou <code class=\"docutils literal notranslate\"><span class=\"pre\">DateTimeField</span></code>.</p></li>\n<li><p><strong>admin.E129</strong> : <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;modeladmin&gt;</span></code> doit définir une méthode <code class=\"docutils literal notranslate\"><span class=\"pre\">has_&lt;foo&gt;_permission()</span></code> pour l’action <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;action&gt;</span></code>.</p></li>\n<li><p><strong>admin.E130</strong> : les attributs <code class=\"docutils literal notranslate\"><span class=\"pre\">__name__</span></code> des actions définies dans <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;modeladmin&gt;</span></code> doivent être uniques. Le nom <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;nom&gt;</span></code> n’est pas unique.</p></li>\n</ul>\n</section>\n<section id=\"inlinemodeladmin\">\n<h4><code class=\"docutils literal notranslate\"><span class=\"pre\">InlineModelAdmin</span></code><a class=\"heading-anchor\" href=\"#inlinemodeladmin\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>Les contrôles suivants sont effectués sur chaque <a class=\"reference internal\" href=\"/fr/4.2/ref/contrib/admin/#django.contrib.admin.InlineModelAdmin\" title=\"django.contrib.admin.InlineModelAdmin\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">InlineModelAdmin</span></code></a> qui est inscrit comme élément intégré dans une classe <a class=\"reference internal\" href=\"/fr/4.2/ref/contrib/admin/#django.contrib.admin.ModelAdmin\" title=\"django.contrib.admin.ModelAdmin\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">ModelAdmin</span></code></a>.</p>\n<ul class=\"simple\">\n<li><p><strong>admin.E201</strong> : vous ne pouvez pas exclure le champ <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;nom_de_champ&gt;</span></code>, car il s’agit de la clé étrangère vers le modèle parent <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;étiquette_application&gt;.&lt;modèle&gt;</span></code>.</p></li>\n<li><p><strong>admin.E202</strong> : <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;modèle&gt;</span></code> n’a pas de clé <code class=\"docutils literal notranslate\"><span class=\"pre\">ForeignKey</span></code> vers <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;modèle</span> <span class=\"pre\">parent&gt;</span></code>./ <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;modèle&gt;</span> <span class=\"pre\">``</span> <span class=\"pre\">a</span> <span class=\"pre\">plus</span> <span class=\"pre\">d'une</span> <span class=\"pre\">clé</span> <span class=\"pre\">``ForeignKey</span></code> vers <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;modèle</span> <span class=\"pre\">parent&gt;</span></code>. Vous devez indiquer un attribut <code class=\"docutils literal notranslate\"><span class=\"pre\">fk_name</span></code>.</p></li>\n<li><p><strong>admin.E203</strong> : la valeur de <code class=\"docutils literal notranslate\"><span class=\"pre\">extra</span></code> doit être un nombre entier.</p></li>\n<li><p><strong>admin.E204</strong> : la valeur de <code class=\"docutils literal notranslate\"><span class=\"pre\">max_num</span></code> doit être un nombre entier.</p></li>\n<li><p><strong>admin.E205</strong> : la valeur de <code class=\"docutils literal notranslate\"><span class=\"pre\">min_num</span></code> doit être un nombre entier.</p></li>\n<li><p><strong>admin.E206</strong> : la valeur de <code class=\"docutils literal notranslate\"><span class=\"pre\">formset</span></code> doit hériter de <code class=\"docutils literal notranslate\"><span class=\"pre\">BaseModelFormSet</span></code>.</p></li>\n</ul>\n</section>\n<section id=\"genericinlinemodeladmin\">\n<h4><code class=\"docutils literal notranslate\"><span class=\"pre\">GenericInlineModelAdmin</span></code><a class=\"heading-anchor\" href=\"#genericinlinemodeladmin\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>Les contrôles suivants sont effectués sur chaque <a class=\"reference internal\" href=\"/fr/4.2/ref/contrib/contenttypes/#django.contrib.contenttypes.admin.GenericInlineModelAdmin\" title=\"django.contrib.contenttypes.admin.GenericInlineModelAdmin\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">GenericInlineModelAdmin</span></code></a> qui est inscrit comme élément intégré dans une classe <a class=\"reference internal\" href=\"/fr/4.2/ref/contrib/admin/#django.contrib.admin.ModelAdmin\" title=\"django.contrib.admin.ModelAdmin\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">ModelAdmin</span></code></a>.</p>\n<ul class=\"simple\">\n<li><p><strong>admin.E301</strong> : <code class=\"docutils literal notranslate\"><span class=\"pre\">'champ_ct'</span></code> fait référence à <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;label&gt;</span></code>, qui n’est pas un champ de <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;modèle&gt;</span></code>.</p></li>\n<li><p><strong>admin.E302</strong> : <code class=\"docutils literal notranslate\"><span class=\"pre\">'champ_ct_fk'</span></code> fait référence à <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;label&gt;</span></code>, qui n’est pas un champ de <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;modèle&gt;</span></code>.</p></li>\n<li><p><strong>admin.E303</strong> : <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;modèle&gt;</span></code> n’a pas de clé <code class=\"docutils literal notranslate\"><span class=\"pre\">GenericForeignKey</span></code>.</p></li>\n<li><p><strong>admin.E304</strong> : <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;modèle&gt;</span></code> n’a pas de clé <code class=\"docutils literal notranslate\"><span class=\"pre\">GenericForeignKey</span></code> utilisant le champ de type de contenu <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;nom_de_champ&gt;</span></code> et le champ d’identifiant d’objet <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;nom_de_champ&gt;</span></code>.</p></li>\n</ul>\n</section>\n<section id=\"adminsite\">\n<h4><code class=\"docutils literal notranslate\"><span class=\"pre\">AdminSite</span></code><a class=\"heading-anchor\" href=\"#adminsite\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>Les contrôles suivants sont effectués sur l’objet <a class=\"reference internal\" href=\"/fr/4.2/ref/contrib/admin/#django.contrib.admin.AdminSite\" title=\"django.contrib.admin.AdminSite\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">AdminSite</span></code></a> par défaut :</p>\n<ul class=\"simple\">\n<li><p><strong>admin.E401</strong> : <a class=\"reference internal\" href=\"/fr/4.2/ref/contrib/contenttypes/#module-django.contrib.contenttypes\" title=\"django.contrib.contenttypes: Provides generic interface to installed models.\"><code class=\"xref py py-mod docutils literal notranslate\"><span class=\"pre\">django.contrib.contenttypes</span></code></a> doit être dans <a class=\"reference internal\" href=\"/fr/4.2/ref/settings/#std-setting-INSTALLED_APPS\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">INSTALLED_APPS</span></code></a> pour pouvoir utiliser l’application d’administration.</p></li>\n<li><p><strong>admin.E402</strong> : <a class=\"reference internal\" href=\"/fr/4.2/ref/templates/api/#django.contrib.auth.context_processors.auth\" title=\"django.contrib.auth.context_processors.auth\"><code class=\"xref py py-mod docutils literal notranslate\"><span class=\"pre\">django.contrib.auth.context_processors.auth</span></code></a> doit être activé dans <a class=\"reference internal\" href=\"/fr/4.2/topics/templates/#django.template.backends.django.DjangoTemplates\" title=\"django.template.backends.django.DjangoTemplates\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">DjangoTemplates</span></code></a> (<a class=\"reference internal\" href=\"/fr/4.2/ref/settings/#std-setting-TEMPLATES\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">TEMPLATES</span></code></a>) si le moteur d’authentification par défaut est actif pour pouvoir utiliser l’application d’administration.</p></li>\n<li><p><strong>admin.E403</strong> : une instance de <a class=\"reference internal\" href=\"/fr/4.2/topics/templates/#django.template.backends.django.DjangoTemplates\" title=\"django.template.backends.django.DjangoTemplates\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">DjangoTemplates</span></code></a> doit être configurée dans <a class=\"reference internal\" href=\"/fr/4.2/ref/settings/#std-setting-TEMPLATES\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">TEMPLATES</span></code></a> pour pouvoir utiliser l’application d’administration.</p></li>\n<li><p><strong>admin.E404</strong> : <code class=\"xref py py-mod docutils literal notranslate\"><span class=\"pre\">django.contrib.messages.context_processors.messages</span></code> doit être activé dans <a class=\"reference internal\" href=\"/fr/4.2/topics/templates/#django.template.backends.django.DjangoTemplates\" title=\"django.template.backends.django.DjangoTemplates\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">DjangoTemplates</span></code></a> (<a class=\"reference internal\" href=\"/fr/4.2/ref/settings/#std-setting-TEMPLATES\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">TEMPLATES</span></code></a>) pour pouvoir utiliser l’application d’administration.</p></li>\n<li><p><strong>admin.E405</strong> : <a class=\"reference internal\" href=\"/fr/4.2/topics/auth/#module-django.contrib.auth\" title=\"django.contrib.auth: Django's authentication framework.\"><code class=\"xref py py-mod docutils literal notranslate\"><span class=\"pre\">django.contrib.auth</span></code></a> doit être dans <a class=\"reference internal\" href=\"/fr/4.2/ref/settings/#std-setting-INSTALLED_APPS\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">INSTALLED_APPS</span></code></a> pour pouvoir utiliser l’application d’administration.</p></li>\n<li><p><strong>admin.E406</strong> : <a class=\"reference internal\" href=\"/fr/4.2/ref/contrib/messages/#module-django.contrib.messages\" title=\"django.contrib.messages: Provides cookie- and session-based temporary message storage.\"><code class=\"xref py py-mod docutils literal notranslate\"><span class=\"pre\">django.contrib.messages</span></code></a> doit être dans <a class=\"reference internal\" href=\"/fr/4.2/ref/settings/#std-setting-INSTALLED_APPS\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">INSTALLED_APPS</span></code></a> pour pouvoir utiliser l’application d’administration.</p></li>\n<li><p><strong>admin.E408</strong> : <a class=\"reference internal\" href=\"/fr/4.2/ref/middleware/#django.contrib.auth.middleware.AuthenticationMiddleware\" title=\"django.contrib.auth.middleware.AuthenticationMiddleware\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">django.contrib.auth.middleware.AuthenticationMiddleware</span></code></a> doit être dans <a class=\"reference internal\" href=\"/fr/4.2/ref/settings/#std-setting-MIDDLEWARE\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">MIDDLEWARE</span></code></a> pour pouvoir utiliser l’application d’administration.</p></li>\n<li><p><strong>admin.E409</strong> : <a class=\"reference internal\" href=\"/fr/4.2/ref/middleware/#django.contrib.messages.middleware.MessageMiddleware\" title=\"django.contrib.messages.middleware.MessageMiddleware\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">django.contrib.messages.middleware.MessageMiddleware</span></code></a> doit être dans <a class=\"reference internal\" href=\"/fr/4.2/ref/settings/#std-setting-MIDDLEWARE\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">MIDDLEWARE</span></code></a> pour pouvoir utiliser l’application d’administration.</p></li>\n<li><p><strong>admin.E410</strong> : <a class=\"reference internal\" href=\"/fr/4.2/ref/middleware/#django.contrib.sessions.middleware.SessionMiddleware\" title=\"django.contrib.sessions.middleware.SessionMiddleware\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">django.contrib.sessions.middleware.SessionMiddleware</span></code></a> doit être dans <a class=\"reference internal\" href=\"/fr/4.2/ref/settings/#std-setting-MIDDLEWARE\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">MIDDLEWARE</span></code></a> pour pouvoir utiliser l’application d’administration.</p></li>\n<li><p><strong>admin.W411</strong> : <code class=\"xref py py-mod docutils literal notranslate\"><span class=\"pre\">django.template.context_processors.request</span></code> doit être activé dans <a class=\"reference internal\" href=\"/fr/4.2/topics/templates/#django.template.backends.django.DjangoTemplates\" title=\"django.template.backends.django.DjangoTemplates\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">DjangoTemplates</span></code></a> (<a class=\"reference internal\" href=\"/fr/4.2/ref/settings/#std-setting-TEMPLATES\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">TEMPLATES</span></code></a>) pour pouvoir utiliser le panneau latéral du site d’administration.</p></li>\n</ul>\n</section>\n</section>\n<section id=\"auth\">\n<h3><code class=\"docutils literal notranslate\"><span class=\"pre\">auth</span></code><a class=\"heading-anchor\" href=\"#auth\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<ul class=\"simple\">\n<li><p><strong>auth.E001</strong> : <code class=\"docutils literal notranslate\"><span class=\"pre\">REQUIRED_FIELDS</span></code> doit être une liste ou un tuple.</p></li>\n<li><p><strong>auth.E002</strong> : le champ désigné en tant que <code class=\"docutils literal notranslate\"><span class=\"pre\">USERNAME_FIELD</span></code> pour un modèle utilisateur personnalisé ne doit pas être inclus dans <code class=\"docutils literal notranslate\"><span class=\"pre\">REQUIRED_FIELDS</span></code>.</p></li>\n<li><p><strong>auth.E003</strong> : <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;champ&gt;</span></code> doit être unique car il est désigné comme <code class=\"docutils literal notranslate\"><span class=\"pre\">USERNAME_FIELD</span></code>.</p></li>\n<li><p><strong>auth.W004</strong> : <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;champ&gt;</span></code> est désigné comme <code class=\"docutils literal notranslate\"><span class=\"pre\">USERNAME_FIELD</span></code>, mais il n’est pas unique.</p></li>\n<li><p><strong>auth.E005</strong> : le nom de code de permission <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;nom_code&gt;</span></code> entre en conflit avec une permission intégrée du modèle <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;modèle&gt;</span></code>.</p></li>\n<li><p><strong>auth.E006</strong> : le nom de code de permission <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;nom_code&gt;</span></code> est à double pour le modèle <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;modèle&gt;</span></code>.</p></li>\n<li><p><strong>auth.E007</strong> : l’attribut <a class=\"reference internal\" href=\"/fr/4.2/ref/models/options/#django.db.models.Options.verbose_name\" title=\"django.db.models.Options.verbose_name\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">verbose_name</span></code></a> du modèle <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;modèle&gt;</span></code> ne doit pas dépasser 244 caractères pour que ses noms de permissions automatiques ne dépassent pas 255 caractères.</p></li>\n<li><p><strong>auth.E008</strong> : la permission nommée <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;nom&gt;</span></code> du modèle <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;modèle&gt;</span></code> est plus longue que 255 caractères.</p></li>\n<li><p><strong>auth.C009</strong> : <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;modèle</span> <span class=\"pre\">utilisateur&gt;.is_anonymous</span></code> doit être un attribut ou une propriété plutôt qu’une méthode. Il s’agit d’un problème de sécurité car avec une méthode, les utilisateurs anonymes seront considérés comme authentifiés !</p></li>\n<li><p><strong>auth.C010</strong> : <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;modèle</span> <span class=\"pre\">utilisateur&gt;.is_authenticated</span></code> doit être un attribut ou une propriété plutôt qu’une méthode. Il s’agit d’un problème de sécurité car avec une méthode, les utilisateurs anonymes seront considérés comme authentifiés !</p></li>\n<li><p><strong>auth.E011</strong> : le nom du modèle <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;modèle&gt;</span></code> ne doit pas dépasser 93 caractères pour que ses noms de permissions automatiques ne dépassent pas 100 caractères.</p></li>\n<li><p><strong>auth.E012</strong> : la permission avec nom de code <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;nom_code&gt;</span></code> du modèle <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;modèle&gt;</span></code> est plus longue que 100 caractères.</p></li>\n</ul>\n</section>\n<section id=\"contenttypes\">\n<h3><code class=\"docutils literal notranslate\"><span class=\"pre\">contenttypes</span></code><a class=\"heading-anchor\" href=\"#contenttypes\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Les contrôles suivants sont effectués quand un modèle contient une clé <a class=\"reference internal\" href=\"/fr/4.2/ref/contrib/contenttypes/#django.contrib.contenttypes.fields.GenericForeignKey\" title=\"django.contrib.contenttypes.fields.GenericForeignKey\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">GenericForeignKey</span></code></a> ou une relation <a class=\"reference internal\" href=\"/fr/4.2/ref/contrib/contenttypes/#django.contrib.contenttypes.fields.GenericRelation\" title=\"django.contrib.contenttypes.fields.GenericRelation\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">GenericRelation</span></code></a>:</p>\n<ul class=\"simple\">\n<li><p><strong>contenttypes.E001</strong> : l’ID d’objet <code class=\"docutils literal notranslate\"><span class=\"pre\">GenericForeignKey</span></code> fait référence au champ <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;field&gt;</span></code> qui n’existe pas.</p></li>\n<li><p><strong>contenttypes.E002</strong> : le type de contenu <code class=\"docutils literal notranslate\"><span class=\"pre\">GenericForeignKey</span></code> fait référence au champ <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;field&gt;</span></code> inexistant.</p></li>\n<li><p><strong>contenttypes.E003</strong> : <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;champ&gt;</span></code> n’est pas une clé <code class=\"docutils literal notranslate\"><span class=\"pre\">ForeignKey</span></code>.</p></li>\n<li><p><strong>contenttypes.E004</strong> : <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;field&gt;</span></code> n’est pas une <code class=\"docutils literal notranslate\"><span class=\"pre\">ForeignKey</span></code> vers <code class=\"docutils literal notranslate\"><span class=\"pre\">contenttypes.ContentType</span></code>.</p></li>\n<li><p><strong>contenttypes.E005</strong> : les noms de modèles ne peuvent pas dépasser 100 caractères.</p></li>\n</ul>\n</section>\n<section id=\"postgres\">\n<h3><code class=\"docutils literal notranslate\"><span class=\"pre\">postgres</span></code><a class=\"heading-anchor\" href=\"#postgres\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Les contrôles suivants s’appliquent aux champs de modèle <a class=\"reference internal\" href=\"/fr/4.2/ref/contrib/postgres/#module-django.contrib.postgres\" title=\"django.contrib.postgres: PostgreSQL-specific fields and features\"><code class=\"xref py py-mod docutils literal notranslate\"><span class=\"pre\">django.contrib.postgres</span></code></a>:</p>\n<ul class=\"simple\">\n<li><p><strong>postgres.E001</strong> : le champ de base du tableau comporte des erreurs : …</p></li>\n<li><p><strong>postgres.E001</strong> : le champ de base du tableau ne peut pas être un champ de relation.</p></li>\n<li><p><strong>postgres.E003</strong> : la valeur par défaut de <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;champ&gt;</span></code> doit être un objet exécutable plutôt qu’une instance afin qu’elle ne soit pas partagée entre toutes les instances de ce champ. <em>Ce contrôle a été modifié en</em> <code class=\"docutils literal notranslate\"><span class=\"pre\">fields.E010</span></code> <em>dans Django 3.1</em>.</p></li>\n<li><p><strong>postgres.W004</strong>: le champ de base du tableau génère des avertissements : …</p></li>\n</ul>\n</section>\n<section id=\"sites\">\n<h3><code class=\"docutils literal notranslate\"><span class=\"pre\">sites</span></code><a class=\"heading-anchor\" href=\"#sites\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Les contrôles suivants sont effectués sur chaque modèle utilisant un gestionnaire <a class=\"reference internal\" href=\"/fr/4.2/ref/contrib/sites/#django.contrib.sites.managers.CurrentSiteManager\" title=\"django.contrib.sites.managers.CurrentSiteManager\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">CurrentSiteManager</span></code></a>:</p>\n<ul class=\"simple\">\n<li><p><strong>sites.E001</strong> : <code class=\"docutils literal notranslate\"><span class=\"pre\">CurrentSiteManager</span></code> n’a pas réussi à trouver un champ nommé <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;nom_de_champ&gt;</span></code>.</p></li>\n<li><p><strong>sites.E002</strong> : <code class=\"docutils literal notranslate\"><span class=\"pre\">CurrentSiteManager</span></code> ne peut pas utiliser <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;champ&gt;</span></code> car ce n’est pas une clé étrangère ni un champ plusieurs-à-plusieurs.</p></li>\n</ul>\n<p>Les contrôles suivants vérifient que <a class=\"reference internal\" href=\"/fr/4.2/ref/contrib/sites/#module-django.contrib.sites\" title=\"django.contrib.sites: Lets you operate multiple websites from the same database and Django project\"><code class=\"xref py py-mod docutils literal notranslate\"><span class=\"pre\">django.contrib.sites</span></code></a> est configuré correctement :</p>\n<ul class=\"simple\">\n<li><p><strong>sites.E101</strong> : le réglage <a class=\"reference internal\" href=\"/fr/4.2/ref/settings/#std-setting-SITE_ID\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">SITE_ID</span></code></a> doit être un nombre entier.</p></li>\n</ul>\n</section>\n<section id=\"staticfiles\">\n<h3><code class=\"docutils literal notranslate\"><span class=\"pre\">staticfiles</span></code><a class=\"heading-anchor\" href=\"#staticfiles\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Les contrôles suivants vérifient que <a class=\"reference internal\" href=\"/fr/4.2/ref/contrib/staticfiles/#module-django.contrib.staticfiles\" title=\"django.contrib.staticfiles: An app for handling static files.\"><code class=\"xref py py-mod docutils literal notranslate\"><span class=\"pre\">django.contrib.staticfiles</span></code></a> est configuré correctement :</p>\n<ul class=\"simple\">\n<li><p><strong>staticfiles.E001</strong> : le réglage <a class=\"reference internal\" href=\"/fr/4.2/ref/settings/#std-setting-STATICFILES_DIRS\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">STATICFILES_DIRS</span></code></a> n’est pas un tuple ni une liste.</p></li>\n<li><p><strong>staticfiles.E002</strong> : le réglage <a class=\"reference internal\" href=\"/fr/4.2/ref/settings/#std-setting-STATICFILES_DIRS\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">STATICFILES_DIRS</span></code></a> ne doit pas contenir le réglage <a class=\"reference internal\" href=\"/fr/4.2/ref/settings/#std-setting-STATIC_ROOT\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">STATIC_ROOT</span></code></a>.</p></li>\n<li><p><strong>staticfiles.E003</strong> : le préfixe <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;préfixe&gt;</span></code> dans le réglage <a class=\"reference internal\" href=\"/fr/4.2/ref/settings/#std-setting-STATICFILES_DIRS\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">STATICFILES_DIRS</span></code></a> ne peut pas se terminer par une barre oblique.</p></li>\n<li><p><strong>staticfiles.W004</strong> : le répertoire <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;répertoire&gt;</span></code> dans le réglage <a class=\"reference internal\" href=\"/fr/4.2/ref/settings/#std-setting-STATICFILES_DIRS\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">STATICFILES_DIRS</span></code></a> n’existe pas.</p></li>\n</ul>\n</section>\n</section>","rootId":"system-check-framework","toc":[{"title":"Référence de l’API","anchor":"api-reference","children":[{"title":"CheckMessage","anchor":"checkmessage","children":[]}]},{"title":"Étiquettes prédéfinies","anchor":"builtin-tags","children":[]},{"title":"Vérifications systèmes du noyau","anchor":"core-system-checks","children":[{"title":"Gestion du code asynchrone","anchor":"asynchronous-support","children":[]},{"title":"Rétrocompatibilité","anchor":"backwards-compatibility","children":[]},{"title":"Caches","anchor":"caches","children":[]},{"title":"Base de données","anchor":"database","children":[{"title":"MySQL et MariaDB","anchor":"mysql-and-mariadb","children":[]}]},{"title":"Gestion des fichiers","anchor":"managing-files","children":[]},{"title":"Champs de modèle","anchor":"model-fields","children":[{"title":"Champs de type fichier","anchor":"file-fields","children":[]},{"title":"Champs de liaison","anchor":"related-fields","children":[]}]},{"title":"Modèles","anchor":"models","children":[]},{"title":"Sécurité","anchor":"security","children":[]},{"title":"Signaux","anchor":"signals","children":[]},{"title":"Gabarits","anchor":"templates","children":[]},{"title":"Traduction","anchor":"translation","children":[]},{"title":"URL","anchor":"urls","children":[]}]},{"title":"Contrôles des applications contrib","anchor":"contrib-app-checks","children":[{"title":"admin","anchor":"admin","children":[{"title":"ModelAdmin","anchor":"modeladmin","children":[]},{"title":"InlineModelAdmin","anchor":"inlinemodeladmin","children":[]},{"title":"GenericInlineModelAdmin","anchor":"genericinlinemodeladmin","children":[]},{"title":"AdminSite","anchor":"adminsite","children":[]}]},{"title":"auth","anchor":"auth","children":[]},{"title":"contenttypes","anchor":"contenttypes","children":[]},{"title":"postgres","anchor":"postgres","children":[]},{"title":"sites","anchor":"sites","children":[]},{"title":"staticfiles","anchor":"staticfiles","children":[]}]}],"breadcrumbs":[{"docname":"ref/index","title":"Référence de l’API","url":"/fr/4.2/ref/"}],"prev":{"docname":"ref/applications","title":"Applications","url":"/fr/4.2/ref/applications/"},"next":{"docname":"ref/class-based-views/index","title":"API des vues intégrées fondées sur les classes","url":"/fr/4.2/ref/class-based-views/"},"formats":{"html":"/fr/4.2/ref/checks/","markdown":"/fr/4.2/ref/checks.md","json":"/fr/4.2/ref/checks.json"},"source":"https://github.com/django/django/blob/stable/4.2.x/docs/ref/checks.txt","official":"https://docs.djangoproject.com/fr/4.2/ref/checks/","inVersions":["6.1","6.0","5.2","5.1","5.0","4.2","4.1","4.0","3.2","3.1","3.0","2.2","2.1","2.0","1.11","1.10","1.9"],"inLocales":["en","zh-hans","fr","ja","id","it","pt-br","ko","es","el","pl"]}