{"title":"System check framework","version":"5.1","locale":"en","docname":"ref/checks","url":"/en/5.1/ref/checks/","canonical":"https://djangodocs.dev/en/5.1/ref/checks/","summary":"The system check framework is a set of static checks for validating Django projects. It detects common problems and provides hints for how to fix them. The…","html":"<h1>System check framework<a class=\"heading-anchor\" href=\"#system-check-framework\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h1>\n<p>The system check framework is a set of static checks for validating Django\nprojects. It detects common problems and provides hints for how to fix them.\nThe framework is extensible so you can easily add your own checks.</p>\n<p>For details on how to add your own checks and integrate them with Django’s\nsystem checks, see the <a class=\"reference internal\" href=\"/en/5.1/topics/checks/\"><span class=\"doc\">System check topic guide</span></a>.</p>\n<section id=\"api-reference\">\n<h2>API reference<a class=\"heading-anchor\" href=\"#api-reference\"><span class=\"visually-hidden\">Link to this heading</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\">Link to this heading</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\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>The warnings and errors raised by system checks must be instances of\n<code class=\"docutils literal notranslate\"><span class=\"pre\">CheckMessage</span></code>. An instance encapsulates a single reportable error or\nwarning. It also provides context and hints applicable to the message, and a\nunique identifier that is used for filtering purposes.</p>\n<p>Constructor arguments are:</p>\n<dl class=\"simple\">\n<dt><code class=\"docutils literal notranslate\"><span class=\"pre\">level</span></code></dt><dd><p>The severity of the message. Use one of the predefined values: <code class=\"docutils literal notranslate\"><span class=\"pre\">DEBUG</span></code>,\n<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>. If the level is greater or\nequal to <code class=\"docutils literal notranslate\"><span class=\"pre\">ERROR</span></code>, then Django will prevent management commands from\nexecuting. Messages with level lower than <code class=\"docutils literal notranslate\"><span class=\"pre\">ERROR</span></code> (i.e. warnings) are\nreported to the console, but can be silenced.</p>\n</dd>\n<dt><code class=\"docutils literal notranslate\"><span class=\"pre\">msg</span></code></dt><dd><p>A short (less than 80 characters) string describing the problem. The string\nshould <em>not</em> contain newlines.</p>\n</dd>\n<dt><code class=\"docutils literal notranslate\"><span class=\"pre\">hint</span></code></dt><dd><p>A single-line string providing a hint for fixing the problem. If no hint\ncan be provided, or the hint is self-evident from the error message, the\nhint can be omitted, or a value of <code class=\"docutils literal notranslate\"><span class=\"pre\">None</span></code> can be used.</p>\n</dd>\n<dt><code class=\"docutils literal notranslate\"><span class=\"pre\">obj</span></code></dt><dd><p>Optional. An object providing context for the message (for example, the\nmodel where the problem was discovered). The object should be a model,\nfield, or manager or any other object that defines a <code class=\"docutils literal notranslate\"><span class=\"pre\">__str__()</span></code> method.\nThe method is used while reporting all messages and its result precedes the\nmessage.</p>\n</dd>\n<dt><code class=\"docutils literal notranslate\"><span class=\"pre\">id</span></code></dt><dd><p>Optional string. A unique identifier for the issue. Identifiers should\nfollow the pattern <code class=\"docutils literal notranslate\"><span class=\"pre\">applabel.X001</span></code>, where <code class=\"docutils literal notranslate\"><span class=\"pre\">X</span></code> is one of the letters\n<code class=\"docutils literal notranslate\"><span class=\"pre\">CEWID</span></code>, indicating the message severity (<code class=\"docutils literal notranslate\"><span class=\"pre\">C</span></code> for criticals, <code class=\"docutils literal notranslate\"><span class=\"pre\">E</span></code> for\nerrors and so). The number can be allocated by the application, but should\nbe unique within that application.</p>\n</dd>\n</dl>\n<p>There are subclasses to make creating messages with common levels easier. When\nusing them you can omit the <code class=\"docutils literal notranslate\"><span class=\"pre\">level</span></code> argument because it is implied by the\nclass name.</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\">Link to this definition</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\">Link to this definition</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</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.Warning\"><span class=\"visually-hidden\">Link to this definition</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\">Link to this definition</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\">Link to this definition</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>Builtin tags<a class=\"heading-anchor\" href=\"#builtin-tags\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Django’s system checks are organized using the following tags:</p>\n<ul class=\"simple\">\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">admin</span></code>: Checks of any admin site declarations.</p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">async_support</span></code>: Checks asynchronous-related configuration.</p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">caches</span></code>: Checks cache related configuration.</p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">compatibility</span></code>: Flags potential problems with version upgrades.</p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">database</span></code>: Checks database-related configuration issues. Database checks\nare not run by default because they do more than static code analysis as\nregular checks do. They are only run by the <a class=\"reference internal\" href=\"/en/5.1/ref/django-admin/#django-admin-migrate\"><code class=\"xref std std-djadmin docutils literal notranslate\"><span class=\"pre\">migrate</span></code></a> command or if\nyou specify configured database aliases using the <code class=\"docutils literal notranslate\"><span class=\"pre\">--database</span></code> option when\ncalling the <a class=\"reference internal\" href=\"/en/5.1/ref/django-admin/#django-admin-check\"><code class=\"xref std std-djadmin docutils literal notranslate\"><span class=\"pre\">check</span></code></a> command.</p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">files</span></code>: Checks files related configuration.</p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">models</span></code>: Checks of model, field, and manager definitions.</p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">security</span></code>: Checks security related configuration.</p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">signals</span></code>: Checks on signal declarations and handler registrations.</p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">sites</span></code>: Checks <a class=\"reference internal\" href=\"/en/5.1/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> configuration.</p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">staticfiles</span></code>: Checks <a class=\"reference internal\" href=\"/en/5.1/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> configuration.</p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">templates</span></code>: Checks template related configuration.</p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">translation</span></code>: Checks translation related configuration.</p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">urls</span></code>: Checks URL configuration.</p></li>\n</ul>\n<p>Some checks may be registered with multiple tags.</p>\n</section>\n<section id=\"core-system-checks\">\n<h2>Core system checks<a class=\"heading-anchor\" href=\"#core-system-checks\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<section id=\"asynchronous-support\">\n<h3>Asynchronous support<a class=\"heading-anchor\" href=\"#asynchronous-support\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>The following checks verify your setup for <a class=\"reference internal\" href=\"/en/5.1/topics/async/\"><span class=\"doc\">Asynchronous support</span></a>:</p>\n<ul class=\"simple\">\n<li><p><strong>async.E001</strong>: You should not set the <span class=\"target\" id=\"index-0\"></span><a class=\"reference internal\" href=\"/en/5.1/topics/async/#envvar-DJANGO_ALLOW_ASYNC_UNSAFE\"><code class=\"xref std std-envvar docutils literal notranslate\"><span class=\"pre\">DJANGO_ALLOW_ASYNC_UNSAFE</span></code></a>\nenvironment variable in deployment. This disables <a class=\"reference internal\" href=\"/en/5.1/topics/async/#async-safety\"><span class=\"std std-ref\">async safety\nprotection</span></a>.</p></li>\n</ul>\n</section>\n<section id=\"backwards-compatibility\">\n<h3>Backwards compatibility<a class=\"heading-anchor\" href=\"#backwards-compatibility\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Compatibility checks warn of potential problems that might occur after\nupgrading Django.</p>\n<ul class=\"simple\">\n<li><p><strong>2_0.W001</strong>: Your URL pattern <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;pattern&gt;</span></code> has a <code class=\"docutils literal notranslate\"><span class=\"pre\">route</span></code> that contains\n<code class=\"docutils literal notranslate\"><span class=\"pre\">(?P&lt;</span></code>, begins with a <code class=\"docutils literal notranslate\"><span class=\"pre\">^</span></code>, or ends with a <code class=\"docutils literal notranslate\"><span class=\"pre\">$</span></code>. This was likely an\noversight when migrating from <code class=\"docutils literal notranslate\"><span class=\"pre\">url()</span></code> to <a class=\"reference internal\" href=\"/en/5.1/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>: As of Django 4.0, the values in the\n<a class=\"reference internal\" href=\"/en/5.1/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> setting must start with a scheme (usually\n<code class=\"docutils literal notranslate\"><span class=\"pre\">http://</span></code> or <code class=\"docutils literal notranslate\"><span class=\"pre\">https://</span></code>) but found <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;hostname&gt;</span></code>.</p></li>\n</ul>\n</section>\n<section id=\"caches\">\n<h3>Caches<a class=\"heading-anchor\" href=\"#caches\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>The following checks verify that your <a class=\"reference internal\" href=\"/en/5.1/ref/settings/#std-setting-CACHES\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">CACHES</span></code></a> setting is correctly\nconfigured:</p>\n<ul class=\"simple\">\n<li><p><strong>caches.E001</strong>: You must define a <code class=\"docutils literal notranslate\"><span class=\"pre\">'default'</span></code> cache in your\n<a class=\"reference internal\" href=\"/en/5.1/ref/settings/#std-setting-CACHES\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">CACHES</span></code></a> setting.</p></li>\n<li><p><strong>caches.W002</strong>: Your <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;cache&gt;</span></code> configuration might expose your cache or\nlead to corruption of your data because its\n<a class=\"reference internal\" href=\"/en/5.1/ref/settings/#std-setting-CACHES-LOCATION\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">LOCATION</span></code></a> matches/is inside/contains\n<a class=\"reference internal\" href=\"/en/5.1/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=\"/en/5.1/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=\"/en/5.1/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>: Your <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;cache&gt;</span></code> cache <a class=\"reference internal\" href=\"/en/5.1/ref/settings/#std-setting-CACHES-LOCATION\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">LOCATION</span></code></a>\nis relative. Use an absolute path instead.</p></li>\n</ul>\n</section>\n<section id=\"database\">\n<h3>Database<a class=\"heading-anchor\" href=\"#database\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<section id=\"mysql-and-mariadb\">\n<h4>MySQL and MariaDB<a class=\"heading-anchor\" href=\"#mysql-and-mariadb\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>If you’re using MySQL or MariaDB, the following checks will be performed:</p>\n<ul class=\"simple\">\n<li><p><strong>mysql.E001</strong>: MySQL/MariaDB does not allow unique <code class=\"docutils literal notranslate\"><span class=\"pre\">CharField</span></code>s to have a\n<code class=\"docutils literal notranslate\"><span class=\"pre\">max_length</span></code> &gt; 255. <em>This check was changed to</em> <code class=\"docutils literal notranslate\"><span class=\"pre\">mysql.W003</span></code> <em>in Django\n3.1 as the real maximum size depends on many factors.</em></p></li>\n<li><p><strong>mysql.W002</strong>: MySQL/MariaDB Strict Mode is not set for database connection\n<code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;alias&gt;</span></code>. See also <a class=\"reference internal\" href=\"/en/5.1/ref/databases/#mysql-sql-mode\"><span class=\"std std-ref\">Setting sql_mode</span></a>.</p></li>\n<li><p><strong>mysql.W003</strong>: MySQL/MariaDB may not allow unique <code class=\"docutils literal notranslate\"><span class=\"pre\">CharField</span></code>s to have a\n<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>Managing files<a class=\"heading-anchor\" href=\"#managing-files\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>The following checks verify your setup for <a class=\"reference internal\" href=\"/en/5.1/topics/files/\"><span class=\"doc\">Managing files</span></a>:</p>\n<ul class=\"simple\">\n<li><p><strong>files.E001</strong>: The <a class=\"reference internal\" href=\"/en/5.1/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> setting refers to the\nnonexistent directory <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>Model fields<a class=\"heading-anchor\" href=\"#model-fields\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<ul class=\"simple\">\n<li><p><strong>fields.E001</strong>: Field names must not end with an underscore.</p></li>\n<li><p><strong>fields.E002</strong>: Field names must not contain <code class=\"docutils literal notranslate\"><span class=\"pre\">&quot;__&quot;</span></code>.</p></li>\n<li><p><strong>fields.E003</strong>: <code class=\"docutils literal notranslate\"><span class=\"pre\">pk</span></code> is a reserved word that cannot be used as a field\nname.</p></li>\n<li><p><strong>fields.E004</strong>: <code class=\"docutils literal notranslate\"><span class=\"pre\">choices</span></code> must be a mapping (e.g. a dictionary) or an\niterable (e.g. a list or tuple).</p></li>\n<li><p><strong>fields.E005</strong>: <code class=\"docutils literal notranslate\"><span class=\"pre\">choices</span></code> must be a mapping of actual values to human\nreadable names or an iterable containing <code class=\"docutils literal notranslate\"><span class=\"pre\">(actual</span> <span class=\"pre\">value,</span> <span class=\"pre\">human</span> <span class=\"pre\">readable</span>\n<span class=\"pre\">name)</span></code> tuples.</p></li>\n<li><p><strong>fields.E006</strong>: <code class=\"docutils literal notranslate\"><span class=\"pre\">db_index</span></code> must be <code class=\"docutils literal notranslate\"><span class=\"pre\">None</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code> or <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code>.</p></li>\n<li><p><strong>fields.E007</strong>: Primary keys must not have <code class=\"docutils literal notranslate\"><span class=\"pre\">null=True</span></code>.</p></li>\n<li><p><strong>fields.E008</strong>: All <code class=\"docutils literal notranslate\"><span class=\"pre\">validators</span></code> must be callable.</p></li>\n<li><p><strong>fields.E009</strong>: <code class=\"docutils literal notranslate\"><span class=\"pre\">max_length</span></code> is too small to fit the longest value in\n<code class=\"docutils literal notranslate\"><span class=\"pre\">choices</span></code> (<code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;count&gt;</span></code> characters).</p></li>\n<li><p><strong>fields.E010</strong>: <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;field&gt;</span></code> default should be a callable instead of an\ninstance so that it’s not shared between all field instances.</p></li>\n<li><p><strong>fields.E011</strong>: <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;database&gt;</span></code> does not support default database values with\nexpressions (<code class=\"docutils literal notranslate\"><span class=\"pre\">db_default</span></code>).</p></li>\n<li><p><strong>fields.E012</strong>: <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;expression&gt;</span></code> cannot be used in <code class=\"docutils literal notranslate\"><span class=\"pre\">db_default</span></code>.</p></li>\n<li><p><strong>fields.E100</strong>: <code class=\"docutils literal notranslate\"><span class=\"pre\">AutoField</span></code>s must set primary_key=True.</p></li>\n<li><p><strong>fields.E110</strong>: <code class=\"docutils literal notranslate\"><span class=\"pre\">BooleanField</span></code>s do not accept null values. <em>This check\nappeared before support for null values was added in Django 2.1.</em></p></li>\n<li><p><strong>fields.E120</strong>: <code class=\"docutils literal notranslate\"><span class=\"pre\">CharField</span></code>s must define a <code class=\"docutils literal notranslate\"><span class=\"pre\">max_length</span></code> attribute.</p></li>\n<li><p><strong>fields.E121</strong>: <code class=\"docutils literal notranslate\"><span class=\"pre\">max_length</span></code> must be a positive integer.</p></li>\n<li><p><strong>fields.W122</strong>: <code class=\"docutils literal notranslate\"><span class=\"pre\">max_length</span></code> is ignored when used with\n<code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;integer</span> <span class=\"pre\">field</span> <span class=\"pre\">type&gt;</span></code>.</p></li>\n<li><p><strong>fields.E130</strong>: <code class=\"docutils literal notranslate\"><span class=\"pre\">DecimalField</span></code>s must define a <code class=\"docutils literal notranslate\"><span class=\"pre\">decimal_places</span></code> attribute.</p></li>\n<li><p><strong>fields.E131</strong>: <code class=\"docutils literal notranslate\"><span class=\"pre\">decimal_places</span></code> must be a non-negative integer.</p></li>\n<li><p><strong>fields.E132</strong>: <code class=\"docutils literal notranslate\"><span class=\"pre\">DecimalField</span></code>s must define a <code class=\"docutils literal notranslate\"><span class=\"pre\">max_digits</span></code> attribute.</p></li>\n<li><p><strong>fields.E133</strong>: <code class=\"docutils literal notranslate\"><span class=\"pre\">max_digits</span></code> must be a positive integer.</p></li>\n<li><p><strong>fields.E134</strong>: <code class=\"docutils literal notranslate\"><span class=\"pre\">max_digits</span></code> must be greater or equal to <code class=\"docutils literal notranslate\"><span class=\"pre\">decimal_places</span></code>.</p></li>\n<li><p><strong>fields.E140</strong>: <code class=\"docutils literal notranslate\"><span class=\"pre\">FilePathField</span></code>s must have either <code class=\"docutils literal notranslate\"><span class=\"pre\">allow_files</span></code> or\n<code class=\"docutils literal notranslate\"><span class=\"pre\">allow_folders</span></code> set to True.</p></li>\n<li><p><strong>fields.E150</strong>: <code class=\"docutils literal notranslate\"><span class=\"pre\">GenericIPAddressField</span></code>s cannot have <code class=\"docutils literal notranslate\"><span class=\"pre\">blank=True</span></code> if\n<code class=\"docutils literal notranslate\"><span class=\"pre\">null=False</span></code>, as blank values are stored as nulls.</p></li>\n<li><p><strong>fields.E160</strong>: The 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>, and <code class=\"docutils literal notranslate\"><span class=\"pre\">default</span></code>\nare mutually exclusive. Only one of these options may be present.</p></li>\n<li><p><strong>fields.W161</strong>: Fixed default value provided.</p></li>\n<li><p><strong>fields.W162</strong>: <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;database&gt;</span></code> does not support a database index on\n<code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;field</span> <span class=\"pre\">data</span> <span class=\"pre\">type&gt;</span></code> columns.</p></li>\n<li><p><strong>fields.W163</strong>: <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;database&gt;</span></code> does not support comments on columns\n(<code class=\"docutils literal notranslate\"><span class=\"pre\">db_comment</span></code>).</p></li>\n<li><p><strong>fields.E170</strong>: <code class=\"docutils literal notranslate\"><span class=\"pre\">BinaryField</span></code>’s <code class=\"docutils literal notranslate\"><span class=\"pre\">default</span></code> cannot be a string. Use bytes\ncontent instead.</p></li>\n<li><p><strong>fields.E180</strong>: <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;database&gt;</span></code> does not support <code class=\"docutils literal notranslate\"><span class=\"pre\">JSONField</span></code>s.</p></li>\n<li><p><strong>fields.E190</strong>: <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;database&gt;</span></code> does not support a database collation on\n<code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;field_type&gt;</span></code>s.</p></li>\n<li><p><strong>fields.E220</strong>: <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;database&gt;</span></code> does not support <code class=\"docutils literal notranslate\"><span class=\"pre\">GeneratedField</span></code>s.</p></li>\n<li><p><strong>fields.E221</strong>: <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;database&gt;</span></code> does not support non-persisted\n<code class=\"docutils literal notranslate\"><span class=\"pre\">GeneratedField</span></code>s.</p></li>\n<li><p><strong>fields.E222</strong>: <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;database&gt;</span></code> does not support persisted\n<code class=\"docutils literal notranslate\"><span class=\"pre\">GeneratedField</span></code>s.</p></li>\n<li><p><strong>fields.E223</strong>: <code class=\"docutils literal notranslate\"><span class=\"pre\">GeneratedField.output_field</span></code> has errors: …</p></li>\n<li><p><strong>fields.W224</strong>: <code class=\"docutils literal notranslate\"><span class=\"pre\">GeneratedField.output_field</span></code> has warnings: …</p></li>\n<li><p><strong>fields.E900</strong>: <code class=\"docutils literal notranslate\"><span class=\"pre\">IPAddressField</span></code> has been removed except for support in\nhistorical migrations.</p></li>\n<li><p><strong>fields.W900</strong>: <code class=\"docutils literal notranslate\"><span class=\"pre\">IPAddressField</span></code> has been deprecated. Support for it\n(except in historical migrations) will be removed in Django 1.9. <em>This check\nappeared in Django 1.7 and 1.8</em>.</p></li>\n<li><p><strong>fields.W901</strong>: <code class=\"docutils literal notranslate\"><span class=\"pre\">CommaSeparatedIntegerField</span></code> has been deprecated. Support\nfor it (except in historical migrations) will be removed in Django 2.0. <em>This\ncheck appeared in Django 1.10 and 1.11</em>.</p></li>\n<li><p><strong>fields.E901</strong>: <code class=\"docutils literal notranslate\"><span class=\"pre\">CommaSeparatedIntegerField</span></code> is removed except for support\nin historical migrations.</p></li>\n<li><p><strong>fields.W902</strong>: <code class=\"docutils literal notranslate\"><span class=\"pre\">FloatRangeField</span></code> is deprecated and will be removed in\nDjango 3.1. <em>This check appeared in Django 2.2 and 3.0</em>.</p></li>\n<li><p><strong>fields.W903</strong>: <code class=\"docutils literal notranslate\"><span class=\"pre\">NullBooleanField</span></code> is deprecated. Support for it (except\nin historical migrations) will be removed in Django 4.0. <em>This check appeared\nin Django 3.1 and 3.2</em>.</p></li>\n<li><p><strong>fields.E903</strong>: <code class=\"docutils literal notranslate\"><span class=\"pre\">NullBooleanField</span></code> is removed except for support in\nhistorical migrations.</p></li>\n<li><p><strong>fields.W904</strong>: <code class=\"docutils literal notranslate\"><span class=\"pre\">django.contrib.postgres.fields.JSONField</span></code> is deprecated.\nSupport for it (except in historical migrations) will be removed in Django\n4.0. <em>This check appeared in Django 3.1 and 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> is removed\nexcept for support in historical migrations.</p></li>\n<li><p><strong>fields.W905</strong>: <code class=\"docutils literal notranslate\"><span class=\"pre\">django.contrib.postgres.fields.CICharField</span></code> is\ndeprecated. Support for it (except in historical migrations) will be removed\nin Django 5.1. <em>This check appeared in Django 4.2 and 5.0</em>.</p></li>\n<li><p><strong>fields.E905</strong>: <code class=\"docutils literal notranslate\"><span class=\"pre\">django.contrib.postgres.fields.CICharField</span></code> is removed\nexcept for support in historical migrations.</p></li>\n<li><p><strong>fields.W906</strong>: <code class=\"docutils literal notranslate\"><span class=\"pre\">django.contrib.postgres.fields.CIEmailField</span></code> is\ndeprecated. Support for it (except in historical migrations) will be removed\nin Django 5.1. <em>This check appeared in Django 4.2 and 5.0</em>.</p></li>\n<li><p><strong>fields.E906</strong>: <code class=\"docutils literal notranslate\"><span class=\"pre\">django.contrib.postgres.fields.CIEmailField</span></code> is removed\nexcept for support in historical migrations.</p></li>\n<li><p><strong>fields.W907</strong>: <code class=\"docutils literal notranslate\"><span class=\"pre\">django.contrib.postgres.fields.CITextField</span></code> is\ndeprecated. Support for it (except in historical migrations) will be removed\nin Django 5.1. <em>This check appeared in Django 4.2 and 5.0</em>.</p></li>\n<li><p><strong>fields.E907</strong>: <code class=\"docutils literal notranslate\"><span class=\"pre\">django.contrib.postgres.fields.CITextField</span></code> is removed\nexcept for support for historical migrations.</p></li>\n</ul>\n<section id=\"file-fields\">\n<h4>File fields<a class=\"heading-anchor\" href=\"#file-fields\"><span class=\"visually-hidden\">Link to this heading</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> is not a valid argument for a <code class=\"docutils literal notranslate\"><span class=\"pre\">FileField</span></code>.\n<em>This check is removed in 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> is not a valid argument for a <code class=\"docutils literal notranslate\"><span class=\"pre\">FileField</span></code>.</p></li>\n<li><p><strong>fields.E202</strong>: <code class=\"docutils literal notranslate\"><span class=\"pre\">FileField</span></code>’s <code class=\"docutils literal notranslate\"><span class=\"pre\">upload_to</span></code> argument must be a relative\npath, not an absolute path.</p></li>\n<li><p><strong>fields.E210</strong>: Cannot use <code class=\"docutils literal notranslate\"><span class=\"pre\">ImageField</span></code> because Pillow is not installed.</p></li>\n</ul>\n</section>\n<section id=\"related-fields\">\n<h4>Related fields<a class=\"heading-anchor\" href=\"#related-fields\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<ul class=\"simple\">\n<li><p><strong>fields.E300</strong>: Field defines a relation with model <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;model&gt;</span></code>, which is\neither not installed, or is abstract.</p></li>\n<li><p><strong>fields.E301</strong>: Field defines a relation with the model\n<code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;app_label&gt;.&lt;model&gt;</span></code> which has been swapped out.</p></li>\n<li><p><strong>fields.E302</strong>: Reverse accessor <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;related</span> <span class=\"pre\">model&gt;.&lt;accessor</span> <span class=\"pre\">name&gt;</span></code> for\n<code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;app_label&gt;.&lt;model&gt;.&lt;field</span> <span class=\"pre\">name&gt;</span></code> clashes with field name\n<code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;app_label&gt;.&lt;model&gt;.&lt;field</span> <span class=\"pre\">name&gt;</span></code>.</p></li>\n<li><p><strong>fields.E303</strong>: Reverse query name for <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;app_label&gt;.&lt;model&gt;.&lt;field</span> <span class=\"pre\">name&gt;</span></code>\nclashes with field name <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;app_label&gt;.&lt;model&gt;.&lt;field</span> <span class=\"pre\">name&gt;</span></code>.</p></li>\n<li><p><strong>fields.E304</strong>: Reverse accessor <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;related</span> <span class=\"pre\">model&gt;.&lt;accessor</span> <span class=\"pre\">name&gt;</span></code> for\n<code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;app_label&gt;.&lt;model&gt;.&lt;field</span> <span class=\"pre\">name&gt;</span></code> clashes with reverse accessor for\n<code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;app_label&gt;.&lt;model&gt;.&lt;field</span> <span class=\"pre\">name&gt;</span></code>.</p></li>\n<li><p><strong>fields.E305</strong>: Reverse query name for <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;app_label&gt;.&lt;model&gt;.&lt;field</span> <span class=\"pre\">name&gt;</span></code>\nclashes with reverse query name for <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;app_label&gt;.&lt;model&gt;.&lt;field</span> <span class=\"pre\">name&gt;</span></code>.</p></li>\n<li><p><strong>fields.E306</strong>: The name <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;name&gt;</span></code> is invalid <code class=\"docutils literal notranslate\"><span class=\"pre\">related_name</span></code> for field\n<code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;model&gt;.&lt;field</span> <span class=\"pre\">name&gt;</span></code>.</p></li>\n<li><p><strong>fields.E307</strong>: The field <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;app</span> <span class=\"pre\">label&gt;.&lt;model&gt;.&lt;field</span> <span class=\"pre\">name&gt;</span></code> was declared\nwith a lazy reference to <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;app</span> <span class=\"pre\">label&gt;.&lt;model&gt;</span></code>, but app <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;app</span> <span class=\"pre\">label&gt;</span></code>\nisn’t installed or doesn’t provide model <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;model&gt;</span></code>.</p></li>\n<li><p><strong>fields.E308</strong>: Reverse query name <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;related</span> <span class=\"pre\">query</span> <span class=\"pre\">name&gt;</span></code> must not end\nwith an underscore.</p></li>\n<li><p><strong>fields.E309</strong>: Reverse query name <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;related</span> <span class=\"pre\">query</span> <span class=\"pre\">name&gt;</span></code> must not contain\n<code class=\"docutils literal notranslate\"><span class=\"pre\">'__'</span></code>.</p></li>\n<li><p><strong>fields.E310</strong>: No subset of the fields <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;field1&gt;</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;field2&gt;</span></code>, … on\nmodel <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;model&gt;</span></code> is unique.</p></li>\n<li><p><strong>fields.E311</strong>: <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;model&gt;.&lt;field</span> <span class=\"pre\">name&gt;</span></code> must be unique because it is\nreferenced by a <code class=\"docutils literal notranslate\"><span class=\"pre\">ForeignKey</span></code>.</p></li>\n<li><p><strong>fields.E312</strong>: The <code class=\"docutils literal notranslate\"><span class=\"pre\">to_field</span></code> <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;field</span> <span class=\"pre\">name&gt;</span></code> doesn’t exist on the\nrelated model <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;app</span> <span class=\"pre\">label&gt;.&lt;model&gt;</span></code>.</p></li>\n<li><p><strong>fields.E320</strong>: Field specifies <code class=\"docutils literal notranslate\"><span class=\"pre\">on_delete=SET_NULL</span></code>, but cannot be null.</p></li>\n<li><p><strong>fields.E321</strong>: The field specifies <code class=\"docutils literal notranslate\"><span class=\"pre\">on_delete=SET_DEFAULT</span></code>, but has no\ndefault value.</p></li>\n<li><p><strong>fields.E330</strong>: <code class=\"docutils literal notranslate\"><span class=\"pre\">ManyToManyField</span></code>s cannot be unique.</p></li>\n<li><p><strong>fields.E331</strong>: Field specifies a many-to-many relation through model\n<code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;model&gt;</span></code>, which has not been installed.</p></li>\n<li><p><strong>fields.E332</strong>: Many-to-many fields with intermediate tables must not be\nsymmetrical. <em>This check appeared before Django 3.0.</em></p></li>\n<li><p><strong>fields.E333</strong>: The model is used as an intermediate model by <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;model&gt;</span></code>,\nbut it has more than two foreign keys to <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;model&gt;</span></code>, which is ambiguous.\nYou must specify which two foreign keys Django should use via the\n<code class=\"docutils literal notranslate\"><span class=\"pre\">through_fields</span></code> keyword argument.</p></li>\n<li><p><strong>fields.E334</strong>: The model is used as an intermediate model by <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;model&gt;</span></code>,\nbut it has more than one foreign key from <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;model&gt;</span></code>, which is ambiguous.\nYou must specify which foreign key Django should use via the\n<code class=\"docutils literal notranslate\"><span class=\"pre\">through_fields</span></code> keyword argument.</p></li>\n<li><p><strong>fields.E335</strong>: The model is used as an intermediate model by <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;model&gt;</span></code>,\nbut it has more than one foreign key to <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;model&gt;</span></code>, which is ambiguous.\nYou must specify which foreign key Django should use via the\n<code class=\"docutils literal notranslate\"><span class=\"pre\">through_fields</span></code> keyword argument.</p></li>\n<li><p><strong>fields.E336</strong>: The model is used as an intermediary model by <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;model&gt;</span></code>,\nbut it does not have foreign key to <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;model&gt;</span></code> or <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;model&gt;</span></code>.</p></li>\n<li><p><strong>fields.E337</strong>: Field specifies <code class=\"docutils literal notranslate\"><span class=\"pre\">through_fields</span></code> but does not provide the\nnames of the two link fields that should be used for the relation through\n<code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;model&gt;</span></code>.</p></li>\n<li><p><strong>fields.E338</strong>: The intermediary model <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;through</span> <span class=\"pre\">model&gt;</span></code> has no field\n<code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;field</span> <span class=\"pre\">name&gt;</span></code>.</p></li>\n<li><p><strong>fields.E339</strong>: <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;model&gt;.&lt;field</span> <span class=\"pre\">name&gt;</span></code> is not a foreign key to <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;model&gt;</span></code>.</p></li>\n<li><p><strong>fields.E340</strong>: The field’s intermediary table <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;table</span> <span class=\"pre\">name&gt;</span></code> clashes with\nthe table name of <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;model&gt;</span></code>/<code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;model&gt;.&lt;field</span> <span class=\"pre\">name&gt;</span></code>.</p></li>\n<li><p><strong>fields.W340</strong>: <code class=\"docutils literal notranslate\"><span class=\"pre\">null</span></code> has no effect on <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> does not support <code class=\"docutils literal notranslate\"><span class=\"pre\">validators</span></code>.</p></li>\n<li><p><strong>fields.W342</strong>: Setting <code class=\"docutils literal notranslate\"><span class=\"pre\">unique=True</span></code> on a <code class=\"docutils literal notranslate\"><span class=\"pre\">ForeignKey</span></code> has the same\neffect as using a <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> has no effect on <code class=\"docutils literal notranslate\"><span class=\"pre\">ManyToManyField</span></code>\nwith a <code class=\"docutils literal notranslate\"><span class=\"pre\">through</span></code> model. <em>This check appeared before Django 4.0.</em></p></li>\n<li><p><strong>fields.W344</strong>: The field’s intermediary table <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;table</span> <span class=\"pre\">name&gt;</span></code> clashes with\nthe table name of <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;model&gt;</span></code>/<code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;model&gt;.&lt;field</span> <span class=\"pre\">name&gt;</span></code>.</p></li>\n<li><p><strong>fields.W345</strong>: <code class=\"docutils literal notranslate\"><span class=\"pre\">related_name</span></code> has no effect on <code class=\"docutils literal notranslate\"><span class=\"pre\">ManyToManyField</span></code> with a\nsymmetrical relationship, e.g. to “self”.</p></li>\n<li><p><strong>fields.W346</strong>: <code class=\"docutils literal notranslate\"><span class=\"pre\">db_comment</span></code> has no effect on <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>Models<a class=\"heading-anchor\" href=\"#models\"><span class=\"visually-hidden\">Link to this heading</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> is not of the form <code class=\"docutils literal notranslate\"><span class=\"pre\">app_label.app_name</span></code>.</p></li>\n<li><p><strong>models.E002</strong>: <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;SETTING&gt;</span></code> references <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;model&gt;</span></code>, which has not been\ninstalled, or is abstract.</p></li>\n<li><p><strong>models.E003</strong>: The model has two identical many-to-many relations through\nthe intermediate model <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;app_label&gt;.&lt;model&gt;</span></code>.</p></li>\n<li><p><strong>models.E004</strong>: <code class=\"docutils literal notranslate\"><span class=\"pre\">id</span></code> can only be used as a field name if the field also\nsets <code class=\"docutils literal notranslate\"><span class=\"pre\">primary_key=True</span></code>.</p></li>\n<li><p><strong>models.E005</strong>: The field <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;field</span> <span class=\"pre\">name&gt;</span></code> from parent model <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;model&gt;</span></code>\nclashes with the field <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;field</span> <span class=\"pre\">name&gt;</span></code> from parent model <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;model&gt;</span></code>.</p></li>\n<li><p><strong>models.E006</strong>: The field <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;field</span> <span class=\"pre\">name&gt;</span></code> clashes with the field\n<code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;field</span> <span class=\"pre\">name&gt;</span></code> from model <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;model&gt;</span></code>.</p></li>\n<li><p><strong>models.E007</strong>: Field <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;field</span> <span class=\"pre\">name&gt;</span></code> has column name <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;column</span> <span class=\"pre\">name&gt;</span></code>\nthat is used by another field.</p></li>\n<li><p><strong>models.E008</strong>: <code class=\"docutils literal notranslate\"><span class=\"pre\">index_together</span></code> must be a list or tuple. <em>This check\nappeared before Django 5.1.</em></p></li>\n<li><p><strong>models.E009</strong>: All <code class=\"docutils literal notranslate\"><span class=\"pre\">index_together</span></code> elements must be lists or tuples.\n<em>This check appeared before Django 5.1.</em></p></li>\n<li><p><strong>models.E010</strong>: <code class=\"docutils literal notranslate\"><span class=\"pre\">unique_together</span></code> must be a list or tuple.</p></li>\n<li><p><strong>models.E011</strong>: All <code class=\"docutils literal notranslate\"><span class=\"pre\">unique_together</span></code> elements must be lists or tuples.</p></li>\n<li><p><strong>models.E012</strong>: <code class=\"docutils literal notranslate\"><span class=\"pre\">constraints/indexes/unique_together</span></code> refers to the\nnonexistent field <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;field</span> <span class=\"pre\">name&gt;</span></code>.</p></li>\n<li><p><strong>models.E013</strong>: <code class=\"docutils literal notranslate\"><span class=\"pre\">constraints/indexes/unique_together</span></code> refers to a\n<code class=\"docutils literal notranslate\"><span class=\"pre\">ManyToManyField</span></code> <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;field</span> <span class=\"pre\">name&gt;</span></code>, but <code class=\"docutils literal notranslate\"><span class=\"pre\">ManyToManyField</span></code>s are not\nsupported for that option.</p></li>\n<li><p><strong>models.E014</strong>: <code class=\"docutils literal notranslate\"><span class=\"pre\">ordering</span></code> must be a tuple or list (even if you want to\norder by only one field).</p></li>\n<li><p><strong>models.E015</strong>: <code class=\"docutils literal notranslate\"><span class=\"pre\">ordering</span></code> refers to the nonexistent field, related field,\nor lookup <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;field</span> <span class=\"pre\">name&gt;</span></code>.</p></li>\n<li><p><strong>models.E016</strong>: <code class=\"docutils literal notranslate\"><span class=\"pre\">constraints/indexes/unique_together</span></code> refers to field\n<code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;field_name&gt;</span></code> which is not local to model <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;model&gt;</span></code>.</p></li>\n<li><p><strong>models.E017</strong>: Proxy model <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;model&gt;</span></code> contains model fields.</p></li>\n<li><p><strong>models.E018</strong>: Autogenerated column name too long for field <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;field&gt;</span></code>.\nMaximum length is <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;maximum</span> <span class=\"pre\">length&gt;</span></code> for database <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;alias&gt;</span></code>.</p></li>\n<li><p><strong>models.E019</strong>: Autogenerated column name too long for M2M field\n<code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;M2M</span> <span class=\"pre\">field&gt;</span></code>. Maximum length is <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;maximum</span> <span class=\"pre\">length&gt;</span></code> for database\n<code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;alias&gt;</span></code>.</p></li>\n<li><p><strong>models.E020</strong>: The <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;model&gt;.check()</span></code> class method is currently overridden.</p></li>\n<li><p><strong>models.E021</strong>: <code class=\"docutils literal notranslate\"><span class=\"pre\">ordering</span></code> and <code class=\"docutils literal notranslate\"><span class=\"pre\">order_with_respect_to</span></code> cannot be used\ntogether.</p></li>\n<li><p><strong>models.E022</strong>: <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;function&gt;</span></code> contains a lazy reference to\n<code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;app</span> <span class=\"pre\">label&gt;.&lt;model&gt;</span></code>, but app <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;app</span> <span class=\"pre\">label&gt;</span></code> isn’t installed or\ndoesn’t provide model <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;model&gt;</span></code>.</p></li>\n<li><p><strong>models.E023</strong>: The model name <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;model&gt;</span></code> cannot start or end with an\nunderscore as it collides with the query lookup syntax.</p></li>\n<li><p><strong>models.E024</strong>: The model name <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;model&gt;</span></code> cannot contain double underscores\nas it collides with the query lookup syntax.</p></li>\n<li><p><strong>models.E025</strong>: The property <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;property</span> <span class=\"pre\">name&gt;</span></code> clashes with a related\nfield accessor.</p></li>\n<li><p><strong>models.E026</strong>: The model cannot have more than one field with\n<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;database&gt;</span></code> does not support check constraints.</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;db_table&gt;</span></code> is used by multiple models:\n<code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;model</span> <span class=\"pre\">list&gt;</span></code>.</p></li>\n<li><p><strong>models.E029</strong>: index name <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;index&gt;</span></code> is not unique for model <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;model&gt;</span></code>.</p></li>\n<li><p><strong>models.E030</strong>: index name <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;index&gt;</span></code> is not unique among models:\n<code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;model</span> <span class=\"pre\">list&gt;</span></code>.</p></li>\n<li><p><strong>models.E031</strong>: constraint name <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;constraint&gt;</span></code> is not unique for model\n<code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;model&gt;</span></code>.</p></li>\n<li><p><strong>models.E032</strong>: constraint name <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;constraint&gt;</span></code> is not unique among\nmodels: <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;model</span> <span class=\"pre\">list&gt;</span></code>.</p></li>\n<li><p><strong>models.E033</strong>: The index name <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;index&gt;</span></code> cannot start with an underscore\nor a number.</p></li>\n<li><p><strong>models.E034</strong>: The index name <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;index&gt;</span></code> cannot be longer than\n<code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;max_length&gt;</span></code> characters.</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;db_table&gt;</span></code> is used by multiple models:\n<code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;model</span> <span class=\"pre\">list&gt;</span></code>.</p></li>\n<li><p><strong>models.W036</strong>: <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;database&gt;</span></code> does not support unique constraints with\nconditions.</p></li>\n<li><p><strong>models.W037</strong>: <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;database&gt;</span></code> does not support indexes with conditions.</p></li>\n<li><p><strong>models.W038</strong>: <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;database&gt;</span></code> does not support deferrable unique\nconstraints.</p></li>\n<li><p><strong>models.W039</strong>: <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;database&gt;</span></code> does not support unique constraints with\nnon-key columns.</p></li>\n<li><p><strong>models.W040</strong>: <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;database&gt;</span></code> does not support indexes with non-key\ncolumns.</p></li>\n<li><p><strong>models.E041</strong>: <code class=\"docutils literal notranslate\"><span class=\"pre\">constraints</span></code> refers to the joined field <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;field</span> <span class=\"pre\">name&gt;</span></code>.</p></li>\n<li><p><strong>models.W042</strong>: Auto-created primary key used when not defining a primary\nkey type, by default <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;database&gt;</span></code> does not support indexes on expressions.</p></li>\n<li><p><strong>models.W044</strong>: <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;database&gt;</span></code> does not support unique constraints on\nexpressions.</p></li>\n<li><p><strong>models.W045</strong>: Check constraint <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;constraint&gt;</span></code> contains <code class=\"docutils literal notranslate\"><span class=\"pre\">RawSQL()</span></code>\nexpression and won’t be validated during the model <code class=\"docutils literal notranslate\"><span class=\"pre\">full_clean()</span></code>.</p></li>\n<li><p><strong>models.W046</strong>: <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;database&gt;</span></code> does not support comments on tables\n(<code class=\"docutils literal notranslate\"><span class=\"pre\">db_table_comment</span></code>).</p></li>\n<li><p><strong>models.W047</strong>: <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;database&gt;</span></code> does not support unique constraints with\nnulls distinct.</p></li>\n</ul>\n</section>\n<section id=\"security\">\n<h3>Security<a class=\"heading-anchor\" href=\"#security\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>The security checks do not make your site secure. They do not audit code, do\nintrusion detection, or do anything particularly complex. Rather, they help\nperform an automated, low-hanging-fruit checklist, that can help you to improve\nyour site’s security.</p>\n<p>Some of these checks may not be appropriate for your particular deployment\nconfiguration. For instance, if you do your HTTP to HTTPS redirection in a load\nbalancer, it’d be irritating to be constantly warned about not having enabled\n<a class=\"reference internal\" href=\"/en/5.1/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>. Use <a class=\"reference internal\" href=\"/en/5.1/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> to\nsilence unneeded checks.</p>\n<p>The following checks are run if you use the <a class=\"reference internal\" href=\"/en/5.1/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> option:</p>\n<ul class=\"simple\">\n<li><p><strong>security.W001</strong>: You do not have\n<a class=\"reference internal\" href=\"/en/5.1/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> in your\n<a class=\"reference internal\" href=\"/en/5.1/ref/settings/#std-setting-MIDDLEWARE\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">MIDDLEWARE</span></code></a> so the <a class=\"reference internal\" href=\"/en/5.1/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>,\n<a class=\"reference internal\" href=\"/en/5.1/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=\"/en/5.1/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<a class=\"reference internal\" href=\"/en/5.1/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>, and\n<a class=\"reference internal\" href=\"/en/5.1/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> settings will have no effect.</p></li>\n<li><p><strong>security.W002</strong>: You do not have\n<a class=\"reference internal\" href=\"/en/5.1/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> in your\n<a class=\"reference internal\" href=\"/en/5.1/ref/settings/#std-setting-MIDDLEWARE\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">MIDDLEWARE</span></code></a>, so your pages will not be served with an\n<code class=\"docutils literal notranslate\"><span class=\"pre\">'x-frame-options'</span></code> header. Unless there is a good reason for your\nsite to be served in a frame, you should consider enabling this\nheader to help prevent clickjacking attacks.</p></li>\n<li><p><strong>security.W003</strong>: You don’t appear to be using Django’s built-in cross-site\nrequest forgery protection via the middleware\n(<a class=\"reference internal\" href=\"/en/5.1/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> is not in your\n<a class=\"reference internal\" href=\"/en/5.1/ref/settings/#std-setting-MIDDLEWARE\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">MIDDLEWARE</span></code></a>). Enabling the middleware is the safest\napproach to ensure you don’t leave any holes.</p></li>\n<li><p><strong>security.W004</strong>: You have not set a value for the\n<a class=\"reference internal\" href=\"/en/5.1/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> setting. If your entire site is served only\nover SSL, you may want to consider setting a value and enabling <a class=\"reference internal\" href=\"/en/5.1/ref/middleware/#http-strict-transport-security\"><span class=\"std std-ref\">HTTP\nStrict Transport Security</span></a>. Be sure to read\nthe documentation first; enabling HSTS carelessly can cause serious,\nirreversible problems.</p></li>\n<li><p><strong>security.W005</strong>: You have not set the\n<a class=\"reference internal\" href=\"/en/5.1/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> setting to <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code>. Without this,\nyour site is potentially vulnerable to attack via an insecure connection to a\nsubdomain. Only set this to <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code> if you are certain that all subdomains of\nyour domain should be served exclusively via SSL.</p></li>\n<li><p><strong>security.W006</strong>: Your <a class=\"reference internal\" href=\"/en/5.1/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> setting is not\nset to <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code>, so your pages will not be served with an\n<code class=\"docutils literal notranslate\"><span class=\"pre\">'X-Content-Type-Options:</span> <span class=\"pre\">nosniff'</span></code> header. You should consider enabling\nthis header to prevent the browser from identifying content types incorrectly.</p></li>\n<li><p><strong>security.W007</strong>: Your <code class=\"docutils literal notranslate\"><span class=\"pre\">SECURE_BROWSER_XSS_FILTER</span></code> setting is not\nset to <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code>, so your pages will not be served with an\n<code class=\"docutils literal notranslate\"><span class=\"pre\">'X-XSS-Protection:</span> <span class=\"pre\">1;</span> <span class=\"pre\">mode=block'</span></code> header. You should consider enabling\nthis header to activate the browser’s XSS filtering and help prevent XSS\nattacks. <em>This check is removed in Django 3.0 as the</em> <code class=\"docutils literal notranslate\"><span class=\"pre\">X-XSS-Protection</span></code>\n<em>header is no longer honored by modern browsers.</em></p></li>\n<li><p><strong>security.W008</strong>: Your <a class=\"reference internal\" href=\"/en/5.1/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> setting is not set to\n<code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code>. Unless your site should be available over both SSL and non-SSL\nconnections, you may want to either set this setting to <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code> or configure\na load balancer or reverse-proxy server  to redirect all connections to HTTPS.</p></li>\n<li><p><strong>security.W009</strong>: Your <a class=\"reference internal\" href=\"/en/5.1/ref/settings/#std-setting-SECRET_KEY\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">SECRET_KEY</span></code></a> has less than 50 characters,\nless than 5 unique characters, or it’s prefixed with <code class=\"docutils literal notranslate\"><span class=\"pre\">'django-insecure-'</span></code>\nindicating that it was generated automatically by Django. Please generate a\nlong and random value, otherwise many of Django’s security-critical features\nwill be vulnerable to attack.</p></li>\n<li><p><strong>security.W010</strong>: You have <a class=\"reference internal\" href=\"/en/5.1/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> in your\n<a class=\"reference internal\" href=\"/en/5.1/ref/settings/#std-setting-INSTALLED_APPS\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">INSTALLED_APPS</span></code></a> but you have not set\n<a class=\"reference internal\" href=\"/en/5.1/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> to <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code>. Using a secure-only session\ncookie makes it more difficult for network traffic sniffers to hijack user\nsessions.</p></li>\n<li><p><strong>security.W011</strong>: You have\n<a class=\"reference internal\" href=\"/en/5.1/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> in your\n<a class=\"reference internal\" href=\"/en/5.1/ref/settings/#std-setting-MIDDLEWARE\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">MIDDLEWARE</span></code></a>, but you have not set <a class=\"reference internal\" href=\"/en/5.1/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>\nto <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code>. Using a secure-only session cookie makes it more difficult for\nnetwork traffic sniffers to hijack user sessions.</p></li>\n<li><p><strong>security.W012</strong>: <a class=\"reference internal\" href=\"/en/5.1/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> is not set to <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code>.\nUsing a secure-only session cookie makes it more difficult for network traffic\nsniffers to hijack user sessions.</p></li>\n<li><p><strong>security.W013</strong>: You have <a class=\"reference internal\" href=\"/en/5.1/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> in your\n<a class=\"reference internal\" href=\"/en/5.1/ref/settings/#std-setting-INSTALLED_APPS\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">INSTALLED_APPS</span></code></a>, but you have not set\n<a class=\"reference internal\" href=\"/en/5.1/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> to <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code>. Using an <code class=\"docutils literal notranslate\"><span class=\"pre\">HttpOnly</span></code> session\ncookie makes it more difficult for cross-site scripting attacks to hijack user\nsessions.</p></li>\n<li><p><strong>security.W014</strong>: You have\n<a class=\"reference internal\" href=\"/en/5.1/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> in your\n<a class=\"reference internal\" href=\"/en/5.1/ref/settings/#std-setting-MIDDLEWARE\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">MIDDLEWARE</span></code></a>, but you have not set <a class=\"reference internal\" href=\"/en/5.1/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>\nto <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code>. Using an <code class=\"docutils literal notranslate\"><span class=\"pre\">HttpOnly</span></code> session cookie makes it more difficult for\ncross-site scripting attacks to hijack user sessions.</p></li>\n<li><p><strong>security.W015</strong>: <a class=\"reference internal\" href=\"/en/5.1/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> is not set to <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code>.\nUsing an <code class=\"docutils literal notranslate\"><span class=\"pre\">HttpOnly</span></code> session cookie makes it more difficult for cross-site\nscripting attacks to hijack user sessions.</p></li>\n<li><p><strong>security.W016</strong>: <a class=\"reference internal\" href=\"/en/5.1/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> is not set to <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code>.\nUsing a secure-only CSRF cookie makes it more difficult for network traffic\nsniffers to steal the CSRF token.</p></li>\n<li><p><strong>security.W017</strong>: <a class=\"reference internal\" href=\"/en/5.1/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> is not set to <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code>.\nUsing an <code class=\"docutils literal notranslate\"><span class=\"pre\">HttpOnly</span></code> CSRF cookie makes it more difficult for cross-site\nscripting attacks to steal the CSRF token. <em>This check is removed in Django\n1.11 as the</em> <a class=\"reference internal\" href=\"/en/5.1/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>setting offers no practical\nbenefit.</em></p></li>\n<li><p><strong>security.W018</strong>: You should not have <a class=\"reference internal\" href=\"/en/5.1/ref/settings/#std-setting-DEBUG\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">DEBUG</span></code></a> set to <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code> in\ndeployment.</p></li>\n<li><p><strong>security.W019</strong>: You have\n<a class=\"reference internal\" href=\"/en/5.1/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> in your\n<a class=\"reference internal\" href=\"/en/5.1/ref/settings/#std-setting-MIDDLEWARE\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">MIDDLEWARE</span></code></a>, but <a class=\"reference internal\" href=\"/en/5.1/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> is not set to\n<code class=\"docutils literal notranslate\"><span class=\"pre\">'DENY'</span></code>. Unless there is a good reason for your site to serve other parts\nof itself in a frame, you should change it to <code class=\"docutils literal notranslate\"><span class=\"pre\">'DENY'</span></code>.</p></li>\n<li><p><strong>security.W020</strong>: <a class=\"reference internal\" href=\"/en/5.1/ref/settings/#std-setting-ALLOWED_HOSTS\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">ALLOWED_HOSTS</span></code></a> must not be empty in deployment.</p></li>\n<li><p><strong>security.W021</strong>: You have not set the\n<a class=\"reference internal\" href=\"/en/5.1/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> setting to <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code>. Without this, your site\ncannot be submitted to the browser preload list.</p></li>\n<li><p><strong>security.W022</strong>: You have not set the <a class=\"reference internal\" href=\"/en/5.1/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>\nsetting. Without this, your site will not send a Referrer-Policy header. You\nshould consider enabling this header to protect user privacy.</p></li>\n<li><p><strong>security.E023</strong>: You have set the <a class=\"reference internal\" href=\"/en/5.1/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> setting\nto an invalid value.</p></li>\n<li><p><strong>security.E024</strong>: You have set the\n<a class=\"reference internal\" href=\"/en/5.1/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> setting to an invalid value.</p></li>\n<li><p><strong>security.W025</strong>: Your\n<a class=\"reference internal\" href=\"/en/5.1/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> has less than 50\ncharacters, less than 5 unique characters, or it’s prefixed with\n<code class=\"docutils literal notranslate\"><span class=\"pre\">'django-insecure-'</span></code> indicating that it was generated automatically by\nDjango. Please generate a long and random value, otherwise many of Django’s\nsecurity-critical features will be vulnerable to attack.</p></li>\n</ul>\n<p>The following checks verify that your security-related settings are correctly\nconfigured:</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> must be <code class=\"docutils literal notranslate\"><span class=\"pre\">'sha1'</span></code> or\n<code class=\"docutils literal notranslate\"><span class=\"pre\">'sha256'</span></code>. <em>This check appeared in Django 3.1 and 3.2</em>.</p></li>\n<li><p><strong>security.E101</strong>: The CSRF failure view <code class=\"docutils literal notranslate\"><span class=\"pre\">'path.to.view'</span></code> does not take the\ncorrect number of arguments.</p></li>\n<li><p><strong>security.E102</strong>: The CSRF failure view <code class=\"docutils literal notranslate\"><span class=\"pre\">'path.to.view'</span></code> could not be\nimported.</p></li>\n</ul>\n</section>\n<section id=\"signals\">\n<h3>Signals<a class=\"heading-anchor\" href=\"#signals\"><span class=\"visually-hidden\">Link to this heading</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;handler&gt;</span></code> was connected to the <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;signal&gt;</span></code> signal with\na lazy reference to the sender <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;app</span> <span class=\"pre\">label&gt;.&lt;model&gt;</span></code>, but app <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;app</span> <span class=\"pre\">label&gt;</span></code>\nisn’t installed or doesn’t provide model <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;model&gt;</span></code>.</p></li>\n</ul>\n</section>\n<section id=\"templates\">\n<h3>Templates<a class=\"heading-anchor\" href=\"#templates\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>The following checks verify that your <a class=\"reference internal\" href=\"/en/5.1/ref/settings/#std-setting-TEMPLATES\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">TEMPLATES</span></code></a> setting is correctly\nconfigured:</p>\n<ul class=\"simple\">\n<li><p><strong>templates.E001</strong>: You have <code class=\"docutils literal notranslate\"><span class=\"pre\">'APP_DIRS':</span> <span class=\"pre\">True</span></code> in your\n<a class=\"reference internal\" href=\"/en/5.1/ref/settings/#std-setting-TEMPLATES\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">TEMPLATES</span></code></a> but also specify <code class=\"docutils literal notranslate\"><span class=\"pre\">'loaders'</span></code> in <code class=\"docutils literal notranslate\"><span class=\"pre\">OPTIONS</span></code>. Either\nremove <code class=\"docutils literal notranslate\"><span class=\"pre\">APP_DIRS</span></code> or remove the <code class=\"docutils literal notranslate\"><span class=\"pre\">'loaders'</span></code> option. <em>This check is\nremoved in Django 5.1 as system checks may now raise</em>\n<code class=\"docutils literal notranslate\"><span class=\"pre\">ImproperlyConfigured</span></code> <em>instead.</em></p></li>\n<li><p><strong>templates.E002</strong>: <code class=\"docutils literal notranslate\"><span class=\"pre\">string_if_invalid</span></code> in <a class=\"reference internal\" href=\"/en/5.1/ref/settings/#std-setting-TEMPLATES\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">TEMPLATES</span></code></a>\n<a class=\"reference internal\" href=\"/en/5.1/ref/settings/#std-setting-TEMPLATES-OPTIONS\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">OPTIONS</span></code></a> must be a string but got: <code class=\"docutils literal notranslate\"><span class=\"pre\">{value}</span></code>\n(<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> is used for multiple template tag modules:\n<code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;module</span> <span class=\"pre\">list&gt;</span></code>. <em>This check was changed to</em> <code class=\"docutils literal notranslate\"><span class=\"pre\">templates.W003</span></code> <em>in Django\n4.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> is used for multiple template tag modules:\n<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>Translation<a class=\"heading-anchor\" href=\"#translation\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>The following checks are performed on your translation configuration:</p>\n<ul class=\"simple\">\n<li><p><strong>translation.E001</strong>: You have provided an invalid value for the\n<a class=\"reference internal\" href=\"/en/5.1/ref/settings/#std-setting-LANGUAGE_CODE\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">LANGUAGE_CODE</span></code></a> setting: <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;value&gt;</span></code>.</p></li>\n<li><p><strong>translation.E002</strong>: You have provided an invalid language code in the\n<a class=\"reference internal\" href=\"/en/5.1/ref/settings/#std-setting-LANGUAGES\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">LANGUAGES</span></code></a> setting: <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;value&gt;</span></code>.</p></li>\n<li><p><strong>translation.E003</strong>: You have provided an invalid language code in the\n<a class=\"reference internal\" href=\"/en/5.1/ref/settings/#std-setting-LANGUAGES_BIDI\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">LANGUAGES_BIDI</span></code></a> setting: <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;value&gt;</span></code>.</p></li>\n<li><p><strong>translation.E004</strong>: You have provided a value for the\n<a class=\"reference internal\" href=\"/en/5.1/ref/settings/#std-setting-LANGUAGE_CODE\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">LANGUAGE_CODE</span></code></a> setting that is not in the <a class=\"reference internal\" href=\"/en/5.1/ref/settings/#std-setting-LANGUAGES\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">LANGUAGES</span></code></a>\nsetting.</p></li>\n</ul>\n</section>\n<section id=\"urls\">\n<h3>URLs<a class=\"heading-anchor\" href=\"#urls\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>The following checks are performed on your URL configuration:</p>\n<ul class=\"simple\">\n<li><p><strong>urls.W001</strong>: Your URL pattern <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;pattern&gt;</span></code> uses\n<a class=\"reference internal\" href=\"/en/5.1/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> with a <code class=\"docutils literal notranslate\"><span class=\"pre\">route</span></code> ending with a <code class=\"docutils literal notranslate\"><span class=\"pre\">$</span></code>. Remove the\ndollar from the <code class=\"docutils literal notranslate\"><span class=\"pre\">route</span></code> to avoid problems including URLs.</p></li>\n<li><p><strong>urls.W002</strong>: Your URL pattern <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;pattern&gt;</span></code> has a <code class=\"docutils literal notranslate\"><span class=\"pre\">route</span></code> beginning with\na <code class=\"docutils literal notranslate\"><span class=\"pre\">/</span></code>. Remove this slash as it is unnecessary. If this pattern is targeted\nin an <a class=\"reference internal\" href=\"/en/5.1/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>, ensure the <a class=\"reference internal\" href=\"/en/5.1/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>\npattern has a trailing <code class=\"docutils literal notranslate\"><span class=\"pre\">/</span></code>.</p></li>\n<li><p><strong>urls.W003</strong>: Your URL pattern <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;pattern&gt;</span></code> has a <code class=\"docutils literal notranslate\"><span class=\"pre\">name</span></code>\nincluding a <code class=\"docutils literal notranslate\"><span class=\"pre\">:</span></code>. Remove the colon, to avoid ambiguous namespace\nreferences.</p></li>\n<li><p><strong>urls.E004</strong>: Your URL pattern <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;pattern&gt;</span></code> is invalid. Ensure that\n<code class=\"docutils literal notranslate\"><span class=\"pre\">urlpatterns</span></code> is a list of <a class=\"reference internal\" href=\"/en/5.1/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> and/or\n<a class=\"reference internal\" href=\"/en/5.1/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> instances.</p></li>\n<li><p><strong>urls.W005</strong>: URL namespace <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;namespace&gt;</span></code> isn’t unique. You may not be\nable to reverse all URLs in this namespace.</p></li>\n<li><p><strong>urls.E006</strong>: The <a class=\"reference internal\" href=\"/en/5.1/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=\"/en/5.1/ref/settings/#std-setting-STATIC_URL\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">STATIC_URL</span></code></a> setting must\nend with a slash.</p></li>\n<li><p><strong>urls.E007</strong>: The custom <code class=\"docutils literal notranslate\"><span class=\"pre\">handlerXXX</span></code> view <code class=\"docutils literal notranslate\"><span class=\"pre\">'path.to.view'</span></code> does not\ntake the correct number of arguments (…).</p></li>\n<li><p><strong>urls.E008</strong>: The custom <code class=\"docutils literal notranslate\"><span class=\"pre\">handlerXXX</span></code> view <code class=\"docutils literal notranslate\"><span class=\"pre\">'path.to.view'</span></code> could not be\nimported.</p></li>\n<li><p><strong>urls.E009</strong>: Your URL pattern <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;pattern&gt;</span></code> has an invalid view, pass\n<code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;view&gt;.as_view()</span></code> instead of <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;view&gt;</span></code>.</p></li>\n<li><p><strong>urls.W010</strong>: Your URL pattern <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;pattern&gt;</span></code> has an unmatched\n<code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;angle</span> <span class=\"pre\">bracket&gt;</span></code>.</p></li>\n</ul>\n</section>\n</section>\n<section id=\"contrib-app-checks\">\n<h2><code class=\"docutils literal notranslate\"><span class=\"pre\">contrib</span></code> app checks<a class=\"heading-anchor\" href=\"#contrib-app-checks\"><span class=\"visually-hidden\">Link to this heading</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\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Admin checks are all performed as part of the <code class=\"docutils literal notranslate\"><span class=\"pre\">admin</span></code> tag.</p>\n<p>The following checks are performed on any\n<a class=\"reference internal\" href=\"/en/5.1/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> (or subclass) that is registered\nwith the admin site:</p>\n<ul class=\"simple\">\n<li><p><strong>admin.E001</strong>: The value of <code class=\"docutils literal notranslate\"><span class=\"pre\">raw_id_fields</span></code> must be a list or tuple.</p></li>\n<li><p><strong>admin.E002</strong>: The value of <code class=\"docutils literal notranslate\"><span class=\"pre\">raw_id_fields[n]</span></code> refers to <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;field</span> <span class=\"pre\">name&gt;</span></code>,\nwhich is not a field of <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;model&gt;</span></code>.</p></li>\n<li><p><strong>admin.E003</strong>: The value of <code class=\"docutils literal notranslate\"><span class=\"pre\">raw_id_fields[n]</span></code> must be a foreign key or\na many-to-many field.</p></li>\n<li><p><strong>admin.E004</strong>: The value of <code class=\"docutils literal notranslate\"><span class=\"pre\">fields</span></code> must be a list or tuple.</p></li>\n<li><p><strong>admin.E005</strong>: Both <code class=\"docutils literal notranslate\"><span class=\"pre\">fieldsets</span></code> and <code class=\"docutils literal notranslate\"><span class=\"pre\">fields</span></code> are specified.</p></li>\n<li><p><strong>admin.E006</strong>: The value of <code class=\"docutils literal notranslate\"><span class=\"pre\">fields</span></code> contains duplicate field(s).</p></li>\n<li><p><strong>admin.E007</strong>: The value of <code class=\"docutils literal notranslate\"><span class=\"pre\">fieldsets</span></code> must be a list or tuple.</p></li>\n<li><p><strong>admin.E008</strong>: The value of <code class=\"docutils literal notranslate\"><span class=\"pre\">fieldsets[n]</span></code> must be a list or tuple.</p></li>\n<li><p><strong>admin.E009</strong>: The value of <code class=\"docutils literal notranslate\"><span class=\"pre\">fieldsets[n]</span></code> must be of length 2.</p></li>\n<li><p><strong>admin.E010</strong>: The value of <code class=\"docutils literal notranslate\"><span class=\"pre\">fieldsets[n][1]</span></code> must be a dictionary.</p></li>\n<li><p><strong>admin.E011</strong>: The value of <code class=\"docutils literal notranslate\"><span class=\"pre\">fieldsets[n][1]</span></code> must contain the key\n<code class=\"docutils literal notranslate\"><span class=\"pre\">fields</span></code>.</p></li>\n<li><p><strong>admin.E012</strong>: There are duplicate field(s) in <code class=\"docutils literal notranslate\"><span class=\"pre\">fieldsets[n][1]</span></code>.</p></li>\n<li><p><strong>admin.E013</strong>: The value of\n<code class=\"docutils literal notranslate\"><span class=\"pre\">fields[n]/filter_horizontal[n]/filter_vertical[n]/fieldsets[n][m]</span></code> cannot\ninclude the <code class=\"docutils literal notranslate\"><span class=\"pre\">ManyToManyField</span></code> <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;field</span> <span class=\"pre\">name&gt;</span></code>, because that field manually\nspecifies a relationship model.</p></li>\n<li><p><strong>admin.E014</strong>: The value of <code class=\"docutils literal notranslate\"><span class=\"pre\">exclude</span></code> must be a list or tuple.</p></li>\n<li><p><strong>admin.E015</strong>: The value of <code class=\"docutils literal notranslate\"><span class=\"pre\">exclude</span></code> contains duplicate field(s).</p></li>\n<li><p><strong>admin.E016</strong>: The value of <code class=\"docutils literal notranslate\"><span class=\"pre\">form</span></code> must inherit from <code class=\"docutils literal notranslate\"><span class=\"pre\">BaseModelForm</span></code>.</p></li>\n<li><p><strong>admin.E017</strong>: The value of <code class=\"docutils literal notranslate\"><span class=\"pre\">filter_vertical</span></code> must be a list or tuple.</p></li>\n<li><p><strong>admin.E018</strong>: The value of <code class=\"docutils literal notranslate\"><span class=\"pre\">filter_horizontal</span></code> must be a list or tuple.</p></li>\n<li><p><strong>admin.E019</strong>: The value of <code class=\"docutils literal notranslate\"><span class=\"pre\">filter_vertical[n]/filter_horizontal[n]</span></code>\nrefers to <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;field</span> <span class=\"pre\">name&gt;</span></code>, which is not a field of <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;model&gt;</span></code>.</p></li>\n<li><p><strong>admin.E020</strong>: The value of <code class=\"docutils literal notranslate\"><span class=\"pre\">filter_vertical[n]/filter_horizontal[n]</span></code>\nmust be a many-to-many field.</p></li>\n<li><p><strong>admin.E021</strong>: The value of <code class=\"docutils literal notranslate\"><span class=\"pre\">radio_fields</span></code> must be a dictionary.</p></li>\n<li><p><strong>admin.E022</strong>: The value of <code class=\"docutils literal notranslate\"><span class=\"pre\">radio_fields</span></code> refers to <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;field</span> <span class=\"pre\">name&gt;</span></code>,\nwhich is not a field of <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;model&gt;</span></code>.</p></li>\n<li><p><strong>admin.E023</strong>: The value of <code class=\"docutils literal notranslate\"><span class=\"pre\">radio_fields</span></code> refers to <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;field</span> <span class=\"pre\">name&gt;</span></code>,\nwhich is not an instance of <code class=\"docutils literal notranslate\"><span class=\"pre\">ForeignKey</span></code>, and does not have a <code class=\"docutils literal notranslate\"><span class=\"pre\">choices</span></code>\ndefinition.</p></li>\n<li><p><strong>admin.E024</strong>: The value of <code class=\"docutils literal notranslate\"><span class=\"pre\">radio_fields[&lt;field</span> <span class=\"pre\">name&gt;]</span></code> must be either\n<code class=\"docutils literal notranslate\"><span class=\"pre\">admin.HORIZONTAL</span></code> or <code class=\"docutils literal notranslate\"><span class=\"pre\">admin.VERTICAL</span></code>.</p></li>\n<li><p><strong>admin.E025</strong>: The value of <code class=\"docutils literal notranslate\"><span class=\"pre\">view_on_site</span></code> must be either a callable or a\nboolean value.</p></li>\n<li><p><strong>admin.E026</strong>: The value of <code class=\"docutils literal notranslate\"><span class=\"pre\">prepopulated_fields</span></code> must be a dictionary.</p></li>\n<li><p><strong>admin.E027</strong>: The value of <code class=\"docutils literal notranslate\"><span class=\"pre\">prepopulated_fields</span></code> refers to\n<code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;field</span> <span class=\"pre\">name&gt;</span></code>, which is not a field of <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;model&gt;</span></code>.</p></li>\n<li><p><strong>admin.E028</strong>: The value of <code class=\"docutils literal notranslate\"><span class=\"pre\">prepopulated_fields</span></code> refers to\n<code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;field</span> <span class=\"pre\">name&gt;</span></code>, which must not be a <code class=\"docutils literal notranslate\"><span class=\"pre\">DateTimeField</span></code>, a <code class=\"docutils literal notranslate\"><span class=\"pre\">ForeignKey</span></code>,\na <code class=\"docutils literal notranslate\"><span class=\"pre\">OneToOneField</span></code>, or a <code class=\"docutils literal notranslate\"><span class=\"pre\">ManyToManyField</span></code> field.</p></li>\n<li><p><strong>admin.E029</strong>: The value of <code class=\"docutils literal notranslate\"><span class=\"pre\">prepopulated_fields[&lt;field</span> <span class=\"pre\">name&gt;]</span></code> must be a\nlist or tuple.</p></li>\n<li><p><strong>admin.E030</strong>: The value of <code class=\"docutils literal notranslate\"><span class=\"pre\">prepopulated_fields</span></code> refers to\n<code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;field</span> <span class=\"pre\">name&gt;</span></code>, which is not a field of <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;model&gt;</span></code>.</p></li>\n<li><p><strong>admin.E031</strong>: The value of <code class=\"docutils literal notranslate\"><span class=\"pre\">ordering</span></code> must be a list or tuple.</p></li>\n<li><p><strong>admin.E032</strong>: The value of <code class=\"docutils literal notranslate\"><span class=\"pre\">ordering</span></code> has the random ordering marker\n<code class=\"docutils literal notranslate\"><span class=\"pre\">?</span></code>, but contains other fields as well.</p></li>\n<li><p><strong>admin.E033</strong>: The value of <code class=\"docutils literal notranslate\"><span class=\"pre\">ordering</span></code> refers to <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;field</span> <span class=\"pre\">name&gt;</span></code>, which\nis not a field of <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;model&gt;</span></code>.</p></li>\n<li><p><strong>admin.E034</strong>: The value of <code class=\"docutils literal notranslate\"><span class=\"pre\">readonly_fields</span></code> must be a list or tuple.</p></li>\n<li><p><strong>admin.E035</strong>: The value of <code class=\"docutils literal notranslate\"><span class=\"pre\">readonly_fields[n]</span></code> refers to\n<code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;field_name&gt;</span></code>, which is not a callable, an attribute of\n<code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;ModelAdmin</span> <span class=\"pre\">class&gt;</span></code>, or an attribute of <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;model&gt;</span></code>.</p></li>\n<li><p><strong>admin.E036</strong>: The value of <code class=\"docutils literal notranslate\"><span class=\"pre\">autocomplete_fields</span></code> must be a list or tuple.</p></li>\n<li><p><strong>admin.E037</strong>: The value of <code class=\"docutils literal notranslate\"><span class=\"pre\">autocomplete_fields[n]</span></code> refers to\n<code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;field</span> <span class=\"pre\">name&gt;</span></code>, which is not a field of <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;model&gt;</span></code>.</p></li>\n<li><p><strong>admin.E038</strong>: The value of <code class=\"docutils literal notranslate\"><span class=\"pre\">autocomplete_fields[n]</span></code> must be a foreign\nkey or a many-to-many field.</p></li>\n<li><p><strong>admin.E039</strong>: An admin for model <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;model&gt;</span></code> has to be registered to be\nreferenced by <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> must define <code class=\"docutils literal notranslate\"><span class=\"pre\">search_fields</span></code>, because\nit’s referenced by <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;other_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\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>The following checks are performed on any\n<a class=\"reference internal\" href=\"/en/5.1/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> that is registered\nwith the admin site:</p>\n<ul class=\"simple\">\n<li><p><strong>admin.E101</strong>: The value of <code class=\"docutils literal notranslate\"><span class=\"pre\">save_as</span></code> must be a boolean.</p></li>\n<li><p><strong>admin.E102</strong>: The value of <code class=\"docutils literal notranslate\"><span class=\"pre\">save_on_top</span></code> must be a boolean.</p></li>\n<li><p><strong>admin.E103</strong>: The value of <code class=\"docutils literal notranslate\"><span class=\"pre\">inlines</span></code> must be a list or 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> must inherit from\n<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> must have a <code class=\"docutils literal notranslate\"><span class=\"pre\">model</span></code> attribute.</p></li>\n<li><p><strong>admin.E106</strong>: The value of <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;InlineModelAdmin</span> <span class=\"pre\">class&gt;.model</span></code> must be a\n<code class=\"docutils literal notranslate\"><span class=\"pre\">Model</span></code>.</p></li>\n<li><p><strong>admin.E107</strong>: The value of <code class=\"docutils literal notranslate\"><span class=\"pre\">list_display</span></code> must be a list or tuple.</p></li>\n<li><p><strong>admin.E108</strong>: The value of <code class=\"docutils literal notranslate\"><span class=\"pre\">list_display[n]</span></code> refers to <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;label&gt;</span></code>, which\nis not a callable or attribute of <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;ModelAdmin</span> <span class=\"pre\">class&gt;</span></code>, or an attribute,\nmethod, or field on <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;model&gt;</span></code>.</p></li>\n<li><p><strong>admin.E109</strong>: The value of <code class=\"docutils literal notranslate\"><span class=\"pre\">list_display[n]</span></code> must not be a many-to-many\nfield or a reverse foreign key.</p></li>\n<li><p><strong>admin.E110</strong>: The value of <code class=\"docutils literal notranslate\"><span class=\"pre\">list_display_links</span></code> must be a list, a tuple,\nor <code class=\"docutils literal notranslate\"><span class=\"pre\">None</span></code>.</p></li>\n<li><p><strong>admin.E111</strong>: The value of <code class=\"docutils literal notranslate\"><span class=\"pre\">list_display_links[n]</span></code> refers to <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;label&gt;</span></code>,\nwhich is not defined in <code class=\"docutils literal notranslate\"><span class=\"pre\">list_display</span></code>.</p></li>\n<li><p><strong>admin.E112</strong>: The value of <code class=\"docutils literal notranslate\"><span class=\"pre\">list_filter</span></code> must be a list or tuple.</p></li>\n<li><p><strong>admin.E113</strong>: The value of <code class=\"docutils literal notranslate\"><span class=\"pre\">list_filter[n]</span></code> must inherit from\n<code class=\"docutils literal notranslate\"><span class=\"pre\">ListFilter</span></code>.</p></li>\n<li><p><strong>admin.E114</strong>: The value of <code class=\"docutils literal notranslate\"><span class=\"pre\">list_filter[n]</span></code> must not inherit from\n<code class=\"docutils literal notranslate\"><span class=\"pre\">FieldListFilter</span></code>.</p></li>\n<li><p><strong>admin.E115</strong>: The value of <code class=\"docutils literal notranslate\"><span class=\"pre\">list_filter[n][1]</span></code> must inherit from\n<code class=\"docutils literal notranslate\"><span class=\"pre\">FieldListFilter</span></code>.</p></li>\n<li><p><strong>admin.E116</strong>: The value of <code class=\"docutils literal notranslate\"><span class=\"pre\">list_filter[n]</span></code> refers to <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;label&gt;</span></code>,\nwhich does not refer to a Field.</p></li>\n<li><p><strong>admin.E117</strong>: The value of <code class=\"docutils literal notranslate\"><span class=\"pre\">list_select_related</span></code> must be a boolean,\ntuple or list.</p></li>\n<li><p><strong>admin.E118</strong>: The value of <code class=\"docutils literal notranslate\"><span class=\"pre\">list_per_page</span></code> must be an integer.</p></li>\n<li><p><strong>admin.E119</strong>: The value of <code class=\"docutils literal notranslate\"><span class=\"pre\">list_max_show_all</span></code> must be an integer.</p></li>\n<li><p><strong>admin.E120</strong>: The value of <code class=\"docutils literal notranslate\"><span class=\"pre\">list_editable</span></code> must be a list or tuple.</p></li>\n<li><p><strong>admin.E121</strong>: The value of <code class=\"docutils literal notranslate\"><span class=\"pre\">list_editable[n]</span></code> refers to <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;label&gt;</span></code>,\nwhich is not a field of <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;model&gt;</span></code>.</p></li>\n<li><p><strong>admin.E122</strong>: The value of <code class=\"docutils literal notranslate\"><span class=\"pre\">list_editable[n]</span></code> refers to <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;label&gt;</span></code>,\nwhich is not contained in <code class=\"docutils literal notranslate\"><span class=\"pre\">list_display</span></code>.</p></li>\n<li><p><strong>admin.E123</strong>: The value of <code class=\"docutils literal notranslate\"><span class=\"pre\">list_editable[n]</span></code> cannot be in both\n<code class=\"docutils literal notranslate\"><span class=\"pre\">list_editable</span></code> and <code class=\"docutils literal notranslate\"><span class=\"pre\">list_display_links</span></code>.</p></li>\n<li><p><strong>admin.E124</strong>: The value of <code class=\"docutils literal notranslate\"><span class=\"pre\">list_editable[n]</span></code> refers to the first field\nin <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>), which cannot be used unless\n<code class=\"docutils literal notranslate\"><span class=\"pre\">list_display_links</span></code> is set.</p></li>\n<li><p><strong>admin.E125</strong>: The value of <code class=\"docutils literal notranslate\"><span class=\"pre\">list_editable[n]</span></code> refers to <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;field</span> <span class=\"pre\">name&gt;</span></code>,\nwhich is not editable through the admin.</p></li>\n<li><p><strong>admin.E126</strong>: The value of <code class=\"docutils literal notranslate\"><span class=\"pre\">search_fields</span></code> must be a list or tuple.</p></li>\n<li><p><strong>admin.E127</strong>: The value of <code class=\"docutils literal notranslate\"><span class=\"pre\">date_hierarchy</span></code> refers to <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;field</span> <span class=\"pre\">name&gt;</span></code>,\nwhich does not refer to a Field.</p></li>\n<li><p><strong>admin.E128</strong>: The value of <code class=\"docutils literal notranslate\"><span class=\"pre\">date_hierarchy</span></code> must be a <code class=\"docutils literal notranslate\"><span class=\"pre\">DateField</span></code> or\n<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> must define a <code class=\"docutils literal notranslate\"><span class=\"pre\">has_&lt;foo&gt;_permission()</span></code>\nmethod for the <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;action&gt;</span></code> action.</p></li>\n<li><p><strong>admin.E130</strong>: <code class=\"docutils literal notranslate\"><span class=\"pre\">__name__</span></code> attributes of actions defined in\n<code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;modeladmin&gt;</span></code> must be unique. Name <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;name&gt;</span></code> is not 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\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>The following checks are performed on any\n<a class=\"reference internal\" href=\"/en/5.1/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> that is registered as an\ninline on a <a class=\"reference internal\" href=\"/en/5.1/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>: Cannot exclude the field <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;field</span> <span class=\"pre\">name&gt;</span></code>, because it is the\nforeign key to the parent model <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;app_label&gt;.&lt;model&gt;</span></code>.</p></li>\n<li><p><strong>admin.E202</strong>: <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;model&gt;</span></code> has no <code class=\"docutils literal notranslate\"><span class=\"pre\">ForeignKey</span></code> to <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;parent</span> <span class=\"pre\">model&gt;</span></code>./\n<code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;model&gt;</span></code> has more than one <code class=\"docutils literal notranslate\"><span class=\"pre\">ForeignKey</span></code> to <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;parent</span> <span class=\"pre\">model&gt;</span></code>. You must\nspecify a <code class=\"docutils literal notranslate\"><span class=\"pre\">fk_name</span></code> attribute.</p></li>\n<li><p><strong>admin.E203</strong>: The value of <code class=\"docutils literal notranslate\"><span class=\"pre\">extra</span></code> must be an integer.</p></li>\n<li><p><strong>admin.E204</strong>: The value of <code class=\"docutils literal notranslate\"><span class=\"pre\">max_num</span></code> must be an integer.</p></li>\n<li><p><strong>admin.E205</strong>: The value of <code class=\"docutils literal notranslate\"><span class=\"pre\">min_num</span></code> must be an integer.</p></li>\n<li><p><strong>admin.E206</strong>: The value of <code class=\"docutils literal notranslate\"><span class=\"pre\">formset</span></code> must inherit from\n<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\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>The following checks are performed on any\n<a class=\"reference internal\" href=\"/en/5.1/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> that is\nregistered as an inline on a <a class=\"reference internal\" href=\"/en/5.1/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\">'ct_field'</span></code> references <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;label&gt;</span></code>, which is not a field\non <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;model&gt;</span></code>.</p></li>\n<li><p><strong>admin.E302</strong>: <code class=\"docutils literal notranslate\"><span class=\"pre\">'ct_fk_field'</span></code> references <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;label&gt;</span></code>, which is not a\nfield on <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;model&gt;</span></code>.</p></li>\n<li><p><strong>admin.E303</strong>: <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;model&gt;</span></code> has no <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;model&gt;</span></code> has no <code class=\"docutils literal notranslate\"><span class=\"pre\">GenericForeignKey</span></code> using content type\nfield <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;field</span> <span class=\"pre\">name&gt;</span></code> and object ID field <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;field</span> <span class=\"pre\">name&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\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>The following checks are performed on the default\n<a class=\"reference internal\" href=\"/en/5.1/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>:</p>\n<ul class=\"simple\">\n<li><p><strong>admin.E401</strong>: <a class=\"reference internal\" href=\"/en/5.1/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> must be in\n<a class=\"reference internal\" href=\"/en/5.1/ref/settings/#std-setting-INSTALLED_APPS\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">INSTALLED_APPS</span></code></a> in order to use the admin application.</p></li>\n<li><p><strong>admin.E402</strong>: <a class=\"reference internal\" href=\"/en/5.1/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>\nmust be enabled in <a class=\"reference internal\" href=\"/en/5.1/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>\n(<a class=\"reference internal\" href=\"/en/5.1/ref/settings/#std-setting-TEMPLATES\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">TEMPLATES</span></code></a>) if using the default auth backend in order to use the\nadmin application.</p></li>\n<li><p><strong>admin.E403</strong>: A <a class=\"reference internal\" href=\"/en/5.1/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\">django.template.backends.django.DjangoTemplates</span></code></a>\ninstance must be configured in <a class=\"reference internal\" href=\"/en/5.1/ref/settings/#std-setting-TEMPLATES\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">TEMPLATES</span></code></a> in order to use the\nadmin application.</p></li>\n<li><p><strong>admin.E404</strong>: <code class=\"docutils literal notranslate\"><span class=\"pre\">django.contrib.messages.context_processors.messages</span></code>\nmust be enabled in <a class=\"reference internal\" href=\"/en/5.1/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>\n(<a class=\"reference internal\" href=\"/en/5.1/ref/settings/#std-setting-TEMPLATES\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">TEMPLATES</span></code></a>) in order to use the admin application.</p></li>\n<li><p><strong>admin.E405</strong>: <a class=\"reference internal\" href=\"/en/5.1/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> must be in\n<a class=\"reference internal\" href=\"/en/5.1/ref/settings/#std-setting-INSTALLED_APPS\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">INSTALLED_APPS</span></code></a> in order to use the admin application.</p></li>\n<li><p><strong>admin.E406</strong>: <a class=\"reference internal\" href=\"/en/5.1/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> must be in\n<a class=\"reference internal\" href=\"/en/5.1/ref/settings/#std-setting-INSTALLED_APPS\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">INSTALLED_APPS</span></code></a> in order to use the admin application.</p></li>\n<li><p><strong>admin.E408</strong>:\n<a class=\"reference internal\" href=\"/en/5.1/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> must be in\n<a class=\"reference internal\" href=\"/en/5.1/ref/settings/#std-setting-MIDDLEWARE\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">MIDDLEWARE</span></code></a> in order to use the admin application.</p></li>\n<li><p><strong>admin.E409</strong>: <a class=\"reference internal\" href=\"/en/5.1/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>\nmust be in <a class=\"reference internal\" href=\"/en/5.1/ref/settings/#std-setting-MIDDLEWARE\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">MIDDLEWARE</span></code></a> in order to use the admin application.</p></li>\n<li><p><strong>admin.E410</strong>: <a class=\"reference internal\" href=\"/en/5.1/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>\nmust be in <a class=\"reference internal\" href=\"/en/5.1/ref/settings/#std-setting-MIDDLEWARE\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">MIDDLEWARE</span></code></a> in order to use the admin application.</p></li>\n<li><p><strong>admin.W411</strong>: <code class=\"docutils literal notranslate\"><span class=\"pre\">django.template.context_processors.request</span></code> must be\nenabled in <a class=\"reference internal\" href=\"/en/5.1/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>\n(<a class=\"reference internal\" href=\"/en/5.1/ref/settings/#std-setting-TEMPLATES\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">TEMPLATES</span></code></a>) in order to use the admin navigation sidebar.</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\">Link to this heading</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> must be a list or tuple.</p></li>\n<li><p><strong>auth.E002</strong>: The field named as the <code class=\"docutils literal notranslate\"><span class=\"pre\">USERNAME_FIELD</span></code> for a custom user\nmodel must not be included in <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;field&gt;</span></code> must be unique because it is named as the\n<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;field&gt;</span></code> is named as the <code class=\"docutils literal notranslate\"><span class=\"pre\">USERNAME_FIELD</span></code>, but it is not\nunique.</p></li>\n<li><p><strong>auth.E005</strong>: The permission codenamed <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;codename&gt;</span></code> clashes with a builtin\npermission for model <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;model&gt;</span></code>.</p></li>\n<li><p><strong>auth.E006</strong>: The permission codenamed <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;codename&gt;</span></code> is duplicated for model\n<code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;model&gt;</span></code>.</p></li>\n<li><p><strong>auth.E007</strong>: The <a class=\"reference internal\" href=\"/en/5.1/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> of model <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;model&gt;</span></code> must be at most\n244 characters for its builtin permission names\nto be at most 255 characters.</p></li>\n<li><p><strong>auth.E008</strong>: The permission named <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;name&gt;</span></code> of model <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;model&gt;</span></code> is longer\nthan 255 characters.</p></li>\n<li><p><strong>auth.C009</strong>: <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;User</span> <span class=\"pre\">model&gt;.is_anonymous</span></code> must be an attribute or property\nrather than a method. Ignoring this is a security issue as anonymous users\nwill be treated as authenticated!</p></li>\n<li><p><strong>auth.C010</strong>: <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;User</span> <span class=\"pre\">model&gt;.is_authenticated</span></code> must be an attribute or\nproperty rather than a method. Ignoring this is a security issue as anonymous\nusers will be treated as authenticated!</p></li>\n<li><p><strong>auth.E011</strong>: The name of model <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;model&gt;</span></code> must be at most 93 characters\nfor its builtin permission names to be at most 100 characters.</p></li>\n<li><p><strong>auth.E012</strong>: The permission codenamed <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;codename&gt;</span></code> of model <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;model&gt;</span></code>\nis longer than 100 characters.</p></li>\n<li><p><strong>auth.E013</strong>: In order to use\n<a class=\"reference internal\" href=\"/en/5.1/ref/middleware/#django.contrib.auth.middleware.LoginRequiredMiddleware\" title=\"django.contrib.auth.middleware.LoginRequiredMiddleware\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">django.contrib.auth.middleware.LoginRequiredMiddleware</span></code></a>,\n<a class=\"reference internal\" href=\"/en/5.1/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> must be\ndefined before it in MIDDLEWARE.</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\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>The following checks are performed when a model contains a\n<a class=\"reference internal\" href=\"/en/5.1/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> or\n<a class=\"reference internal\" href=\"/en/5.1/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>: The <code class=\"docutils literal notranslate\"><span class=\"pre\">GenericForeignKey</span></code> object ID references the\nnonexistent field <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;field&gt;</span></code>.</p></li>\n<li><p><strong>contenttypes.E002</strong>: The <code class=\"docutils literal notranslate\"><span class=\"pre\">GenericForeignKey</span></code> content type references the\nnonexistent field <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;field&gt;</span></code>.</p></li>\n<li><p><strong>contenttypes.E003</strong>: <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;field&gt;</span></code> is not a <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> is not a <code class=\"docutils literal notranslate\"><span class=\"pre\">ForeignKey</span></code> to\n<code class=\"docutils literal notranslate\"><span class=\"pre\">contenttypes.ContentType</span></code>.</p></li>\n<li><p><strong>contenttypes.E005</strong>: Model names must be at most 100 characters.</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\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>The following checks are performed on <a class=\"reference internal\" href=\"/en/5.1/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> model\nfields:</p>\n<ul class=\"simple\">\n<li><p><strong>postgres.E001</strong>: Base field for array has errors: …</p></li>\n<li><p><strong>postgres.E002</strong>: Base field for array cannot be a related field.</p></li>\n<li><p><strong>postgres.E003</strong>: <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;field&gt;</span></code> default should be a callable instead of an\ninstance so that it’s not shared between all field instances. <em>This check was\nchanged to</em> <code class=\"docutils literal notranslate\"><span class=\"pre\">fields.E010</span></code> <em>in Django 3.1</em>.</p></li>\n<li><p><strong>postgres.W004</strong>: Base field for array has warnings: …</p></li>\n</ul>\n</section>\n<section id=\"sites\">\n<span id=\"sites-system-checks\"></span><h3><code class=\"docutils literal notranslate\"><span class=\"pre\">sites</span></code><a class=\"heading-anchor\" href=\"#sites\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>The following checks are performed on any model using a\n<a class=\"reference internal\" href=\"/en/5.1/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> could not find a field named\n<code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;field</span> <span class=\"pre\">name&gt;</span></code>.</p></li>\n<li><p><strong>sites.E002</strong>: <code class=\"docutils literal notranslate\"><span class=\"pre\">CurrentSiteManager</span></code> cannot use <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;field&gt;</span></code> as it is not a\nforeign key or a many-to-many field.</p></li>\n</ul>\n<p>The following checks verify that <a class=\"reference internal\" href=\"/en/5.1/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> is correctly\nconfigured:</p>\n<ul class=\"simple\">\n<li><p><strong>sites.E101</strong>: The <a class=\"reference internal\" href=\"/en/5.1/ref/settings/#std-setting-SITE_ID\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">SITE_ID</span></code></a> setting must be an integer.</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\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>The following checks verify that <a class=\"reference internal\" href=\"/en/5.1/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> is correctly\nconfigured:</p>\n<ul class=\"simple\">\n<li><p><strong>staticfiles.E001</strong>: The <a class=\"reference internal\" href=\"/en/5.1/ref/settings/#std-setting-STATICFILES_DIRS\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">STATICFILES_DIRS</span></code></a> setting is not a tuple\nor list.</p></li>\n<li><p><strong>staticfiles.E002</strong>: The <a class=\"reference internal\" href=\"/en/5.1/ref/settings/#std-setting-STATICFILES_DIRS\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">STATICFILES_DIRS</span></code></a> setting should not\ncontain the <a class=\"reference internal\" href=\"/en/5.1/ref/settings/#std-setting-STATIC_ROOT\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">STATIC_ROOT</span></code></a> setting.</p></li>\n<li><p><strong>staticfiles.E003</strong>: The prefix <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;prefix&gt;</span></code> in the\n<a class=\"reference internal\" href=\"/en/5.1/ref/settings/#std-setting-STATICFILES_DIRS\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">STATICFILES_DIRS</span></code></a> setting must not end with a slash.</p></li>\n<li><p><strong>staticfiles.W004</strong>: The directory <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;directory&gt;</span></code> in the\n<a class=\"reference internal\" href=\"/en/5.1/ref/settings/#std-setting-STATICFILES_DIRS\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">STATICFILES_DIRS</span></code></a> does not exist.</p></li>\n<li><p><strong>staticfiles.E005</strong>: The <a class=\"reference internal\" href=\"/en/5.1/ref/settings/#std-setting-STORAGES\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">STORAGES</span></code></a> setting must define a\n<code class=\"docutils literal notranslate\"><span class=\"pre\">staticfiles</span></code> storage.</p></li>\n</ul>\n</section>\n</section>","rootId":"system-check-framework","toc":[{"title":"API reference","anchor":"api-reference","children":[{"title":"CheckMessage","anchor":"checkmessage","children":[]}]},{"title":"Builtin tags","anchor":"builtin-tags","children":[]},{"title":"Core system checks","anchor":"core-system-checks","children":[{"title":"Asynchronous support","anchor":"asynchronous-support","children":[]},{"title":"Backwards compatibility","anchor":"backwards-compatibility","children":[]},{"title":"Caches","anchor":"caches","children":[]},{"title":"Database","anchor":"database","children":[{"title":"MySQL and MariaDB","anchor":"mysql-and-mariadb","children":[]}]},{"title":"Managing files","anchor":"managing-files","children":[]},{"title":"Model fields","anchor":"model-fields","children":[{"title":"File fields","anchor":"file-fields","children":[]},{"title":"Related fields","anchor":"related-fields","children":[]}]},{"title":"Models","anchor":"models","children":[]},{"title":"Security","anchor":"security","children":[]},{"title":"Signals","anchor":"signals","children":[]},{"title":"Templates","anchor":"templates","children":[]},{"title":"Translation","anchor":"translation","children":[]},{"title":"URLs","anchor":"urls","children":[]}]},{"title":"contrib app checks","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":"API Reference","url":"/en/5.1/ref/"}],"prev":{"docname":"ref/applications","title":"Applications","url":"/en/5.1/ref/applications/"},"next":{"docname":"ref/class-based-views/index","title":"Built-in class-based views API","url":"/en/5.1/ref/class-based-views/"},"formats":{"html":"/en/5.1/ref/checks/","markdown":"/en/5.1/ref/checks.md","json":"/en/5.1/ref/checks.json"},"source":"https://github.com/django/django/blob/stable/5.1.x/docs/ref/checks.txt","official":"https://docs.djangoproject.com/en/5.1/ref/checks/","inVersions":["dev","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","1.8"],"inLocales":["en","zh-hans","fr","ja","id","it","pt-br","ko","es","el","pl"]}