• 3.2
  • 5.0
  • 6.1
  • Версия документации: 3.1

Система проверки системы

Фреймворк системной проверки представляет собой набор статических проверок для проверки проектов Django. Он обнаруживает распространенные проблемы и дает подсказки по их устранению. Платформа расширяема, поэтому вы можете легко добавлять свои собственные проверки.

Подробную информацию о том, как добавлять свои собственные проверки и интегрировать их с системными проверками Django, см. в Руководстве по проверке системы.

Справочник по API

Проверить сообщение

class CheckMessage(level, msg, hint=None, obj=None, id=None)

Предупреждения и ошибки, возникающие при проверке системы, должны быть экземплярами CheckMessage. Экземпляр инкапсулирует одну отчетную ошибку или предупреждение. Он также предоставляет контекст и подсказки, применимые к сообщению, а также уникальный идентификатор, который используется в целях фильтрации.

Аргументы конструктора:

уровень

Серьезность сообщения. Используйте одно из предопределенных значений: DEBUG, INFO, WARNING, ERROR, CRITICAL. Если уровень больше или равен «ERROR», то Django предотвратит выполнение команд управления. Сообщения с уровнем ниже ERROR (т.е. предупреждения) передаются на консоль, но их можно отключить.

сообщение

Короткая (менее 80 символов) строка, описывающая проблему. Строка не должна содержать символы новой строки.

подсказка

Однострочная строка, содержащая подсказку по устранению проблемы. Если подсказка не может быть предоставлена ​​или подсказка очевидна из сообщения об ошибке, подсказку можно опустить или использовать значение None.

объект

Необязательный. Объект, предоставляющий контекст для сообщения (например, модель, в которой была обнаружена проблема). Объект должен быть моделью, полем, менеджером или любым другим объектом, который определяет метод __str__(). Этот метод используется при сообщении обо всех сообщениях, и его результат предшествует сообщению.

идентификатор

Необязательная строка. Уникальный идентификатор проблемы. Идентификаторы должны соответствовать шаблону applabel.X001, где X — это одна из букв CEWID, обозначающая серьезность сообщения («C» для критических сообщений, «E» для ошибок и т. д.). Номер может быть назначен приложением, но он должен быть уникальным внутри этого приложения.

Существуют подклассы, упрощающие создание сообщений с общими уровнями. При их использовании вы можете опустить аргумент «уровень», поскольку он подразумевается в имени класса.

class Debug(msg, hint=None, obj=None, id=None)
class Info(msg, hint=None, obj=None, id=None)
class Warning(msg, hint=None obj=None, id=None)
class Error(msg, hint=None, obj=None, id=None)
class Critical(msg, hint=None, obj=None, id=None)

Встроенные теги

Системные проверки Django организованы с использованием следующих тегов:

  • admin: Проверяет любые объявления администратора сайта.

  • async_support: проверяет асинхронную конфигурацию.

  • кеши: проверяет конфигурацию, связанную с кэшем.

  • Совместимость: указывает на потенциальные проблемы с обновлениями версий.

  • база данных: проверяет проблемы конфигурации, связанные с базой данных. Проверки базы данных не запускаются по умолчанию, поскольку они выполняют не только статический анализ кода, как и обычные проверки. Они запускаются только командой migrate или если вы указываете настроенные псевдонимы базы данных с помощью опции --database при вызове команды check.

  • модели: проверка определений модели, поля и менеджера.

  • security: проверяет конфигурацию, связанную с безопасностью.

  • signals: проверяет объявления сигналов и регистрацию обработчиков.

  • staticfiles: Проверяет конфигурацию django.contrib.staticfiles.

  • шаблоны: проверяет конфигурацию, связанную с шаблоном.

  • translation: проверяет конфигурацию, связанную с переводом.

  • urls: проверяет конфигурацию URL.

Некоторые чеки могут быть зарегистрированы с несколькими тегами.

Changed in Django 3.1:

The async_support tag was added.

Changed in Django 3.1:

The database checks are now run only for database aliases specified using the check --database option.

Основные проверки системы

Асинхронная поддержка

New in Django 3.1.

Следующие проверки проверяют настройку Асинхронная поддержка:

Обратная совместимость

Проверки совместимости предупреждают о потенциальных проблемах, которые могут возникнуть после обновления Django.

  • 2_0.W001: Ваш шаблон URL <pattern> имеет route, который содержит (?P<, начинается с ^ или заканчивается на $. Вероятно, это была ошибка при переходе с url() на path().

Тайники

Следующие проверки проверяют правильность настройки параметра CACHES:

  • caches.E001: Вы должны определить кэш по умолчанию в настройках CACHES.

База данных

MySQL и МарияДБ

Если вы используете MySQL или MariaDB, будут выполнены следующие проверки:

  • mysql.E001: MySQL/MariaDB не позволяет уникальным полям CharField иметь max_length > 255. Эта проверка была изменена на mysql.W003 в Django 3.1, поскольку реальный максимальный размер зависит от многих факторов.

  • mysql.W002: Строгий режим MySQL/MariaDB не установлен для подключения к базе данных <alias>. См. также Настройка sql_mode.

  • mysql.W003: MySQL/MariaDB может не допускать, чтобы уникальные поля CharField имели длину max_length > 255.

Поля модели

  • fields.E001: имена полей не должны заканчиваться подчеркиванием.

  • fields.E002: имена полей не должны содержать "__".

  • fields.E003: pk — это зарезервированное слово, которое нельзя использовать в качестве имени поля.

  • fields.E004: choices must be an iterable (e.g., a list or tuple).

  • fields.E005: choices must be an iterable returning (actual value, human readable name) tuples.

  • fields.E006: db_index должен быть None, True или False.

  • fields.E007: Первичные ключи не должны иметь null=True.

  • fields.E008: Все валидаторы должны быть вызываемыми.

  • fields.E009: max_length слишком мал, чтобы вместить самое длинное значение в choices (символов <count>).

  • fields.E010: <field> по умолчанию должен быть вызываемым объектом, а не экземпляром, чтобы он не использовался совместно всеми экземплярами поля.

  • fields.E100: ``AutoField``s должен установить Primary_key=True.

  • fields.E110: BooleanFields не принимает нулевые значения. Эта проверка появилась до того, как в Django 2.1 была добавлена ​​поддержка нулевых значений.

  • fields.E120: CharFields должен определить атрибут max_length.

  • fields.E121: max_length должно быть положительным целым числом.

  • fields.W122: max_length игнорируется при использовании с <тип целочисленного поля>.

  • fields.E130: DecimalFields должен определять атрибут decimal_places.

  • fields.E131: decimal_places должно быть неотрицательным целым числом.

  • fields.E132: DecimalFields должен определять атрибут max_digits.

  • fields.E133: max_digits must be a non-negative integer.

  • fields.E134: max_digits должно быть больше или равно decimal_places.

  • fields.E140: для FilePathFields либо allow_files, либо allow_folders должно быть установлено значение True.

  • fields.E150: GenericIPAddressFields cannot accept blank values if null values are not allowed, as blank values are stored as nulls.

  • fields.E160: параметры auto_now, auto_now_add и default являются взаимоисключающими. Может присутствовать только один из этих вариантов.

  • fields.W161: предоставляется фиксированное значение по умолчанию.

  • fields.W162: <база данных> не поддерживает индекс базы данных для столбцов <тип данных поля>.

  • fields.E170: Значение по умолчанию для BinaryField не может быть строкой. Вместо этого используйте байтовое содержимое.

  • fields.E180: <database> не поддерживает JSONFields.

  • fields.E900: IPAddressField удален, за исключением поддержки исторических миграций.

  • fields.W900: IPAddressField устарел. Его поддержка (за исключением исторических миграций) будет удалена в Django 1.9. Эта проверка появилась в Django 1.7 и 1.8.

  • fields.W901: CommaSeparatedIntegerField устарел. Его поддержка (за исключением исторических миграций) будет удалена в Django 2.0. Эта проверка появилась в Django 1.10 и 1.11.

  • fields.E901: CommaSeparatedIntegerField удален, за исключением поддержки исторических миграций.

  • fields.W902: FloatRangeField устарел и будет удален в Django 3.1. Эта проверка появилась в Django 2.2 и 3.0.

  • fields.W903: NullBooleanField is deprecated. Support for it (except in historical migrations) will be removed in Django 4.0.

  • fields.W904: django.contrib.postgres.fields.JSONField is deprecated. Support for it (except in historical migrations) will be removed in Django 4.0.

Поля файла

  • fields.E200: unique не является допустимым аргументом для FileField. Эта проверка удалена в Django 1.11.

  • fields.E201: primary_key не является допустимым аргументом для FileField.

  • fields.E202: аргумент FileField upload_to должен быть относительным, а не абсолютным путем.

  • fields.E210: невозможно использовать ImageField, поскольку Pillow не установлен.

Модели

  • models.E001: <swappable> не имеет формы app_label.app_name.

  • models.E002: <SETTING> ссылается на <model>, которая не установлена ​​или является абстрактной.

  • models.E003: модель имеет два идентичных отношения «многие ко многим» через промежуточную модель <app_label>.<model>.

  • models.E004: id можно использовать в качестве имени поля только в том случае, если в поле также установлено primary_key=True.

  • models.E005: Поле <имя поля> из родительской модели <модель> конфликтует с полем <имя поля> из родительской модели <модель>.

  • models.E006: The field clashes with the field <field name> from model <model>.

  • models.E007: Поле <имя поля> имеет имя столбца <имя столбца>, которое используется другим полем.

  • models.E008: index_together must be a list or tuple.

  • models.E009: All index_together elements must be lists or tuples.

  • models.E010: unique_together должен быть списком или кортежем.

  • models.E011: Все элементы unique_together должны быть списками или кортежами.

  • models.E012: indexes/index_together/unique_together refers to the nonexistent field <field name>.

  • models.E013: indexes/index_together/unique_together refers to a ManyToManyField <field name>, but ManyToManyFields are not supported for that option.

  • models.E014: ordering должен быть кортежем или списком (даже если вы хотите упорядочить только по одному полю).

  • models.E015: упорядочение относится к несуществующему полю, связанному полю или поиску <имя поля>.

  • models.E016: indexes/index_together/unique_together refers to field <field_name> which is not local to model <model>.

  • models.E017: Прокси-модель <model> содержит поля модели.

  • models.E018: автоматически созданное имя столбца слишком длинное для поля <field>. Максимальная длина — <maximum length> для базы данных <alias>.

  • models.E019: автоматически созданное имя столбца слишком длинное для поля M2M <M2M field>. Максимальная длина — <maximum length> для базы данных <alias>.

  • models.E020: метод класса <model>.check() в настоящее время переопределен.

  • models.E021: ordering и order_with_respect_to нельзя использовать вместе.

  • models.E022: <function> содержит ленивую ссылку на <app label>.<model>, но приложение <app label> не установлено или не предоставляет модель <model>.

  • models.E023: имя модели <model> не может начинаться или заканчиваться подчеркиванием, поскольку оно противоречит синтаксису поиска запроса.

  • models.E024: имя модели <model> не может содержать двойное подчеркивание, поскольку оно противоречит синтаксису поиска запроса.

  • models.E025: свойство <имя свойства> конфликтует со связанным средством доступа к полю.

  • models.E026: Модель не может иметь более одного поля с primary_key=True.

  • models.W027: <database> не поддерживает проверочные ограничения.

  • models.E028: db_table <db_table> используется несколькими моделями: <model list>.

  • models.E029: имя индекса <index> не является уникальным для модели <model>.

  • models.E030: index name <index> is not unique amongst models: <model list>.

  • models.E031: имя ограничения <constraint> не является уникальным для модели <model>.

  • models.E032: constraint name <constraint> is not unique amongst models: <model list>.

  • models.E033: имя индекса <index> не может начинаться с подчеркивания или цифры.

  • models.E034: Имя индекса <index> не может содержать больше символов <max_length>.

  • models.W035: db_table <db_table> используется несколькими моделями: <model list>.

  • models.W036: <database> не поддерживает уникальные ограничения с условиями.

  • models.W037: <database> не поддерживает индексы с условиями.

  • models.W038: <database> не поддерживает отложенные ограничения уникальности.

Безопасность

Проверки безопасности не обеспечивают безопасность вашего сайта. Они не проверяют код, не обнаруживают вторжений и не делают ничего особенно сложного. Скорее, они помогают выполнить автоматизированный, легко висящий контрольный список, который может помочь вам улучшить безопасность вашего сайта.

Некоторые из этих проверок могут не подходить для вашей конкретной конфигурации развертывания. Например, если вы выполняете перенаправление HTTP на HTTPS в балансировщике нагрузки, будет раздражать постоянное предупреждение о том, что вы не включили SECURE_SSL_REDIRECT. Используйте SILENCED_SYSTEM_CHECKS, чтобы отключить ненужные проверки.

Следующие проверки выполняются, если вы используете опцию check --deploy:

  • security.W001: You do not have django.middleware.security.SecurityMiddleware in your MIDDLEWARE so the SECURE_HSTS_SECONDS, SECURE_CONTENT_TYPE_NOSNIFF, SECURE_BROWSER_XSS_FILTER, SECURE_REFERRER_POLICY, and SECURE_SSL_REDIRECT settings will have no effect.

  • security.W002: У вас нет django.middleware.clickjacking.XFrameOptionsMiddleware в вашем MIDDLEWARE, поэтому ваши страницы не будут обслуживаться с заголовком 'x-frame-options'. Если нет веской причины для показа вашего сайта во фрейме, вам следует рассмотреть возможность включения этого заголовка, чтобы предотвратить атаки кликджекинга.

  • security.W003: Похоже, вы не используете встроенную в Django защиту от подделки межсайтовых запросов через промежуточное программное обеспечение (django.middleware.csrf.CsrfViewMiddleware отсутствует в вашем MIDDLEWARE). Включение промежуточного программного обеспечения — самый безопасный подход, позволяющий не оставить никаких дыр.

  • security.W004: Вы не установили значение для параметра SECURE_HSTS_SECONDS. Если весь ваш сайт обслуживается только через SSL, вы можете рассмотреть возможность установки значения и включения HTTP Strict Transport Security. Обязательно сначала прочтите документацию; Небрежное включение HSTS может вызвать серьезные, необратимые проблемы.

  • security.W005: Вы не установили для параметра SECURE_HSTS_INCLUDE_SUBDOMAINS значение True. Без этого ваш сайт потенциально уязвим для атаки через небезопасное соединение с субдоменом. Установите для этого параметра значение «True», только если вы уверены, что все поддомены вашего домена должны обслуживаться исключительно через SSL.

  • security.W006: Для параметра SECURE_CONTENT_TYPE_NOSNIFF не установлено значение True, поэтому ваши страницы не будут обслуживаться с заголовком 'X-Content-Type-Options: nosniff'. Вам следует рассмотреть возможность включения этого заголовка, чтобы браузер не мог неправильно идентифицировать типы контента.

  • security.W007: Your SECURE_BROWSER_XSS_FILTER setting is not set to True, so your pages will not be served with an 'X-XSS-Protection: 1; mode=block' header. You should consider enabling this header to activate the browser’s XSS filtering and help prevent XSS attacks. This check is removed in Django 3.0 as the X-XSS-Protection header is no longer honored by modern browsers.

  • security.W008: Для параметра SECURE_SSL_REDIRECT не установлено значение True. Если ваш сайт не должен быть доступен как по SSL, так и по не-SSL-соединениям, вы можете либо установить для этого параметра значение «True», либо настроить балансировщик нагрузки или обратный прокси-сервер для перенаправления всех соединений на HTTPS.

  • security.W009: Your SECRET_KEY has less than 50 characters or less than 5 unique characters. Please generate a long and random SECRET_KEY, otherwise many of Django’s security-critical features will be vulnerable to attack.

  • security.W010: У вас есть django.contrib.sessions в ваших INSTALLED_APPS, но вы не установили SESSION_COOKIE_SECURE на True. Использование файлов cookie, предназначенных только для безопасного сеанса, затрудняет перехват пользовательских сеансов анализаторами сетевого трафика.

  • security.W011: У вас есть django.contrib.sessions.middleware.SessionMiddleware в вашем MIDDLEWARE, но вы не установили SESSION_COOKIE_SECURE на True. Использование файлов cookie, предназначенных только для безопасного сеанса, затрудняет перехват пользовательских сеансов анализаторами сетевого трафика.

  • security.W012: SESSION_COOKIE_SECURE не имеет значения True. Использование файлов cookie, предназначенных только для безопасного сеанса, затрудняет перехват пользовательских сеансов анализаторами сетевого трафика.

  • security.W013: У вас есть django.contrib.sessions в ваших INSTALLED_APPS, но вы не установили SESSION_COOKIE_HTTPONLY на True. Использование файла cookie сеанса HttpOnly затрудняет перехват пользовательских сеансов атаками с использованием межсайтовых сценариев.

  • security.W014: У вас есть django.contrib.sessions.middleware.SessionMiddleware в вашем MIDDLEWARE, но вы не установили SESSION_COOKIE_HTTPONLY на True. Использование файла cookie сеанса HttpOnly затрудняет перехват пользовательских сеансов атаками с использованием межсайтовых сценариев.

  • security.W015: SESSION_COOKIE_HTTPONLY не имеет значения True. Использование файла cookie сеанса HttpOnly затрудняет перехват пользовательских сеансов атаками с использованием межсайтовых сценариев.

  • security.W016: CSRF_COOKIE_SECURE не имеет значения True. Использование файла cookie CSRF, предназначенного только для безопасного использования, затрудняет кражу токена CSRF для анализаторов сетевого трафика.

  • security.W017: CSRF_COOKIE_HTTPONLY не имеет значения True. Использование файла cookie CSRF HttpOnly затрудняет кражу токена CSRF для атак с использованием межсайтовых сценариев. Эта проверка удалена в Django 1.11, поскольку CSRF_COOKIE_HTTPONLY настройка не приносит никакой практической пользы.

  • security.W018: при развертывании для DEBUG не должно быть установлено значение True.

  • security.W019: У вас есть django.middleware.clickjacking.XFrameOptionsMiddleware в вашем MIDDLEWARE, но X_FRAME_OPTIONS не установлен в 'DENY'. Если у вашего сайта нет веской причины отображать другие части самого себя во фрейме, вам следует изменить его на 'DENY'.

  • security.W020: ALLOWED_HOSTS не должен быть пустым при развертывании.

  • security.W021: Вы не установили для параметра SECURE_HSTS_PRELOAD значение True. Без этого ваш сайт не сможет быть добавлен в список предварительной загрузки браузера.

  • security.W022: Вы не установили параметр SECURE_REFERRER_POLICY. Без этого ваш сайт не будет отправлять заголовок Referrer-Policy. Вам следует рассмотреть возможность включения этого заголовка для защиты конфиденциальности пользователя.

  • security.E023: Вы установили для параметра SECURE_REFERRER_POLICY недопустимое значение.

Следующие проверки проверяют правильность настройки параметров безопасности:

Сигналы

  • signals.E001: <handler> был подключен к сигналу <signal> с ленивой ссылкой на отправителя <app label>.<model>, но приложение <app label> не установлено или не предоставляет модель <model>.

Шаблоны

Следующие проверки проверяют правильность настройки параметра TEMPLATES:

  • templates.E001: You have 'APP_DIRS': True in your TEMPLATES but also specify 'loaders' in OPTIONS. Either remove APP_DIRS or remove the 'loaders' option.

  • templates.E002: string_if_invalid в TEMPLATES OPTIONS должен быть строкой, но имеет: {value} ({type}).

Перевод

В вашей конфигурации перевода выполняются следующие проверки:

  • translation.E001: Вы указали недопустимое значение для параметра LANGUAGE_CODE: <value>.

  • translation.E002: Вы указали неверный код языка в настройке LANGUAGES: <value>.

  • translation.E003: Вы указали неверный код языка в настройке LANGUAGES_BIDI: <value>.

  • translation.E004: Вы указали значение для параметра LANGUAGE_CODE, которого нет в параметре LANGUAGES.

URL-ы

В конфигурации URL-адреса выполняются следующие проверки:

  • urls.W001: Ваш шаблон URL <pattern> использует include() с route, заканчивающимся на $. Удалите доллар из маршрута, чтобы избежать проблем, включая URL-адреса.

  • urls.W002: Ваш шаблон URL <шаблон> имеет маршрут, начинающийся с /. Удалите эту косую черту, так как она не нужна. Если этот шаблон предназначен для include(), убедитесь, что шаблон include() имеет завершающий /.

  • urls.W003: Ваш шаблон URL <шаблон> имеет имя, включая :. Удалите двоеточие, чтобы избежать неоднозначных ссылок на пространство имен.

  • urls.E004: Ваш шаблон URL <шаблон> недействителен. Убедитесь, что urlpatterns представляет собой список экземпляров path() и/или re_path().

  • urls.W005: пространство имен URL <namespace> не уникально. Возможно, вы не сможете реверсировать все URL-адреса в этом пространстве имен.

  • urls.E006: Параметр MEDIA_URL/ STATIC_URL должен заканчиваться косой чертой.

  • urls.E007: Пользовательское представление handlerXXX 'path.to.view' не принимает правильное количество аргументов (…).

  • urls.E008: Пользовательское представление «handlerXXX» «path.to.view» не удалось импортировать.

contrib проверяет приложение

админ

Все проверки администратора выполняются как часть тега admin.

Следующие проверки выполняются для любого ModelAdmin (или подкласса), зарегистрированного на сайте администратора:

  • admin.E001: значение raw_id_fields должно быть списком или кортежем.

  • admin.E002: The value of raw_id_fields[n] refers to <field name>, which is not an attribute of <model>.

  • admin.E003: значение raw_id_fields[n] должно быть внешним ключом или полем «многие-ко-многим».

  • admin.E004: значение поля должно быть списком или кортежем.

  • admin.E005: указаны как fieldsets, так и fields.

  • admin.E006: Значение поля содержит повторяющиеся поля.

  • admin.E007: значением fieldsets должен быть список или кортеж.

  • admin.E008: значение fieldsets[n] должно быть списком или кортежем.

  • admin.E009: значение fieldsets[n] должно иметь длину 2.

  • admin.E010: Значение fieldsets[n][1] должно быть словарем.

  • admin.E011: Значение fieldsets[n][1] должно содержать ключ fields.

  • admin.E012: В fieldsets[n][1] имеются повторяющиеся поля.

  • admin.E013: fields[n]/fieldsets[n][m] cannot include the ManyToManyField <field name>, because that field manually specifies a relationship model.

  • admin.E014: Значение exclude должно быть списком или кортежем.

  • admin.E015: Значение exclude содержит повторяющиеся поля.

  • admin.E016: значение form должно наследовать от BaseModelForm.

  • admin.E017: Значение filter_vertical должно быть списком или кортежем.

  • admin.E018: значение filter_horizontal должно быть списком или кортежем.

  • admin.E019: The value of filter_vertical[n]/filter_horizontal[n] refers to <field name>, which is not an attribute of <model>.

  • admin.E020: Значение filter_vertical[n]/filter_horizontal[n] должно быть полем «многие ко многим».

  • admin.E021: значение radio_fields должно быть словарем.

  • admin.E022: The value of radio_fields refers to <field name>, which is not an attribute of <model>.

  • admin.E023: Значение radio_fields относится к <имя поля>, которое не является экземпляром ForeignKey и не имеет определения choices.

  • admin.E024: Значение radio_fields[<имя поля>] должно быть либо admin.HORIZONTAL, либо admin.VERTICAL.

  • admin.E025: значение view_on_site должно быть либо вызываемым, либо логическим значением.

  • admin.E026: значение prepopulated_fields должно быть словарем.

  • admin.E027: The value of prepopulated_fields refers to <field name>, which is not an attribute of <model>.

  • admin.E028: Значение prepopulated_fields относится к <имя поля>, которое не должно быть полем DateTimeField, ForeignKey, OneToOneField или ManyToManyField.

  • admin.E029: значение prepopulated_fields[<имя поля>] должно быть списком или кортежем.

  • admin.E030: The value of prepopulated_fields refers to <field name>, which is not an attribute of <model>.

  • admin.E031: значение ordering должно быть списком или кортежем.

  • admin.E032: значение ordering имеет случайный маркер упорядочения ?, но содержит также и другие поля.

  • admin.E033: The value of ordering refers to <field name>, which is not an attribute of <model>.

  • admin.E034: значение readonly_fields должно быть списком или кортежем.

  • admin.E035: The value of readonly_fields[n] is not a callable, an attribute of <ModelAdmin class>, or an attribute of <model>.

  • admin.E036: значение autocomplete_fields должно быть списком или кортежем.

  • admin.E037: The value of autocomplete_fields[n] refers to <field name>, which is not an attribute of <model>.

  • admin.E038: значение autocomplete_fields[n] должно быть внешним ключом или полем «многие-ко-многим».

  • admin.E039: администратор модели <model> должен быть зарегистрирован, чтобы на него ссылался <modeladmin>.autocomplete_fields.

  • admin.E040: <modeladmin> должен определить search_fields, поскольку на него ссылается <other_modeladmin>.autocomplete_fields.

Администратор модели

Следующие проверки выполняются для любого ModelAdmin, зарегистрированного на сайте администратора:

  • admin.E101: Значение save_as должно быть логическим.

  • admin.E102: значение save_on_top должно быть логическим.

  • admin.E103: значение inlines должно быть списком или кортежем.

  • admin.E104: <InlineModelAdmin class> должен наследовать от InlineModelAdmin.

  • admin.E105: <InlineModelAdmin class> должен иметь атрибут model.

  • admin.E106: значение <InlineModelAdmin class>.model должно быть Model.

  • admin.E107: Значение list_display должно быть списком или кортежем.

  • admin.E108: The value of list_display[n] refers to <label>, which is not a callable, an attribute of <ModelAdmin class>, or an attribute or method on <model>.

  • admin.E109: The value of list_display[n] must not be a ManyToManyField field.

  • admin.E110: значение list_display_links должно быть списком, кортежем или значением None.

  • admin.E111: Значение list_display_links[n]`` относится к <label>, который не определен в list_display.

  • admin.E112: Значение list_filter должно быть списком или кортежем.

  • admin.E113: Значение list_filter[n]` должно наследовать от ListFilter.

  • admin.E114: значение list_filter[n]`` не должно наследовать от FieldListFilter.

  • admin.E115: значение list_filter[n][1]`` должно наследовать от FieldListFilter.

  • admin.E116: Значение list_filter[n]`` относится к <label>, который не относится к полю.

  • admin.E117: значение list_select_related должно быть логическим, кортежем или списком.

  • admin.E118: Значение list_per_page должно быть целым числом.

  • admin.E119: Значение list_max_show_all должно быть целым числом.

  • admin.E120: значение list_editable должно быть списком или кортежем.

  • admin.E121: The value of list_editable[n] refers to <label>, which is not an attribute of <model>.

  • admin.E122: Значение list_editable[n]`` относится к <label>, который не содержится в list_display.

  • admin.E123: Значение list_editable[n]`` не может находиться одновременно в list_editable и list_display_links.

  • admin.E124: Значение list_editable[n]`` относится к первому полю в list_display (<label>), которое нельзя использовать, если не установлено list_display_links.

  • admin.E125: Значение list_editable[n]`` относится к <имя поля>, которое нельзя редактировать через администратора.

  • admin.E126: значение search_fields должно быть списком или кортежем.

  • admin.E127: Значение date_hierarchy относится к <имя поля>, которое не относится к полю.

  • admin.E128: Значение date_hierarchy должно быть DateField или DateTimeField.

  • admin.E129: <modeladmin> должен определить метод has_<foo>_permission() для действия <action>.

  • admin.E130: атрибуты __name__ действий, определенные в <modeladmin>, должны быть уникальными. Имя <имя> не уникально.

InlineModelAdmin

Следующие проверки выполняются для любого InlineModelAdmin, который зарегистрирован как встроенный в ModelAdmin.

  • admin.E201: невозможно исключить поле <имя поля>, поскольку оно является внешним ключом родительской модели <app_label>.<model>.

  • admin.E202: <model> не имеет ForeignKey для <родительской модели>./ <model> имеет более одного ForeignKey для <родительской модели>. Вы должны указать атрибут fk_name.

  • admin.E203: Значение extra должно быть целым числом.

  • admin.E204: Значение max_num должно быть целым числом.

  • admin.E205: Значение min_num должно быть целым числом.

  • admin.E206: значение formset должно наследовать от BaseModelFormSet.

GenericInlineModelAdmin

Следующие проверки выполняются для любого GenericInlineModelAdmin, который зарегистрирован как встроенный в ModelAdmin.

  • admin.E301: 'ct_field' ссылается на <label>, который не является полем в <model>.

  • admin.E302: 'ct_fk_field' ссылается на <label>, который не является полем в <model>.

  • admin.E303: <model> не имеет GenericForeignKey.

  • admin.E304: <model> не имеет GenericForeignKey, используя поле типа контента <имя поля> и поле идентификатора объекта <имя поля>.

Админсайт

Следующие проверки выполняются для стандартного AdminSite:

аутентификация

  • auth.E001: REQUIRED_FIELDS должен быть списком или кортежем.

  • auth.E002: поле с именем USERNAME_FIELD для пользовательской модели пользователя не должно быть включено в REQUIRED_FIELDS.

  • auth.E003: <field> должно быть уникальным, поскольку оно называется USERNAME_FIELD.

  • auth.W004: <field> имеет имя USERNAME_FIELD, но оно не уникально.

  • auth.E005: разрешение под кодовым именем <codename> конфликтует со встроенным разрешением для модели <model>.

  • auth.E006: Разрешение с кодовым именем <codename> дублируется для модели <model>.

  • auth.E007: verbose_name модели <model> должен содержать не более 244 символов, чтобы встроенные имена разрешений могли содержать не более 255 символов.

  • auth.E008: разрешение с именем <name> модели <model> имеет длину более 255 символов.

  • auth.C009: <User model>.is_anonymous должен быть атрибутом или свойством, а не методом. Игнорирование этого требования является проблемой безопасности, поскольку анонимные пользователи будут считаться аутентифицированными!

  • auth.C010: <User model>.is_authenticated должен быть атрибутом или свойством, а не методом. Игнорирование этого требования является проблемой безопасности, поскольку анонимные пользователи будут считаться аутентифицированными!

  • auth.E011: имя модели <model> должно содержать не более 93 символов, чтобы встроенные имена разрешений могли содержать не более 100 символов.

  • auth.E012: разрешение с кодовым именем <codename> модели <model> имеет длину более 100 символов.

типы контента

Следующие проверки выполняются, когда модель содержит GenericForeignKey или GenericRelation:

  • contenttypes.E001: Идентификатор объекта GenericForeignKey ссылается на несуществующее поле <field>.

  • contenttypes.E002: Тип контента GenericForeignKey ссылается на несуществующее поле <field>.

  • contenttypes.E003: <field> не является ForeignKey.

  • contenttypes.E004: <field> не является ForeignKey для contenttypes.ContentType.

  • contenttypes.E005: Названия моделей должны содержать не более 100 символов.

постгрес

Следующие проверки выполняются в полях модели django.contrib.postgres:

  • postgres.E001: Базовое поле массива содержит ошибки: …

  • postgres.E002: Базовое поле массива не может быть связанным полем.

  • postgres.E003: <field> по умолчанию должен быть вызываемым, а не экземпляром, чтобы оно не было общим для всех экземпляров поля. Эта проверка была изменена на fields.E010 в Django 3.1.

сайты

Следующие проверки выполняются для любой модели с использованием CurrentSiteManager:

  • sites.E001: CurrentSiteManager не удалось найти поле с именем <имя поля>.

  • sites.E002: CurrentSiteManager не может использовать <field>, поскольку оно не является внешним ключом или полем типа «многие-ко-многим».

статические файлы

Следующие проверки проверяют правильность настройки django.contrib.staticfiles:

  • staticfiles.E001: Параметр STATICFILES_DIRS не является кортежем или списком.

  • staticfiles.E002: Параметр STATICFILES_DIRS не должен содержать параметр STATIC_ROOT.

  • staticfiles.E003: префикс <prefix> в настройке STATICFILES_DIRS не должен заканчиваться косой чертой.

Back to Top