Spec-Zone.ru › Django 1.8

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

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

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

Справочник API

CheckMessage

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

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

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

level
Уровень важности сообщения. Используйте одно из предопределённых значений: DEBUG, INFO, WARNING, ERROR, CRITICAL. Если уровень равен или больше ERROR, Django не позволит выполнить команды управления. Сообщения с уровнем ниже ERROR (то есть предупреждения) выводятся в консоль, но могут быть отключены.
msg
Короткий (менее 80 символов) строковый текст, описывающий проблему. Строка не должна содержать символы новой строки.
hint
Строка в одну строку, предоставляющая подсказку по исправлению проблемы. Если подсказку предоставить невозможно или она очевидна из сообщения об ошибке, подсказку можно опустить или использовать значение None.
obj
Необязательно. Объект, предоставляющий контекст для сообщения (например, модель, в которой была обнаружена проблема). Объект должен быть моделью, полем, менеджером или любым другим объектом, определяющим метод __str__ (в Python 2 вам нужно определить метод __unicode__). Метод используется при отображении всех сообщений, и его результат предшествует сообщению.
id
Необязательная строка. Уникальный идентификатор проблемы. Идентификаторы должны соответствовать шаблону applabel.X001, где X — одна из букв CEWID, указывающая на уровень важности сообщения (C для критических, E для ошибок). Число может быть назначено приложением, но должно быть уникальным в пределах этого приложения.

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

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

Встроенные проверки

Встроенные метки

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

  • models: Проверки, управляющие определениями моделей, полей и менеджеров.
  • signals: Проверки заявлений сигналов и регистрации обработчиков.
  • admin: Проверки любых заявлений админского интерфейса.
  • compatibility: Выявление потенциальных проблем при обновлении версии.
  • security: Проверки конфигурации, связанной с безопасностью.

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

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

Модели

  • models.E001: <swappable> не соответствует шаблону app_label.app_name.
  • models.E002: <SETTING> ссылается на <model>, которое не установлено или является абстрактным.
  • models.E003: Модель имеет две связи «многие ко многим» через промежуточную модель <app_label>.<model>.
  • models.E004: id может использоваться только как имя поля, если поле также устанавливает primary_key=True.
  • models.E005: Поле <field name> из родительской модели <model> конфликтует с полем <field name> из родительской модели <model>.
  • models.E006: Поле конфликтует с полем <field name> модели <model>.
  • models.E007: Поле <field name> имеет имя столбца <column name>, которое используется другим полем.
  • models.E008: index_together должно быть списком или кортежем.
  • models.E009: Все элементы index_together должны быть списками или кортежами.
  • models.E010: unique_together должно быть списком или кортежем.
  • models.E011: Все элементы unique_together должны быть списками или кортежами.
  • models.E012: index_together/unique_together ссылается на несуществующее поле <field name>.
  • models.E013: index_together/unique_together ссылается на ManyToManyField <field name>, но ManyToManyField для этого варианта не поддерживаются.
  • models.E014: ordering должно быть кортежем или списком (даже если вы хотите сортировать только по одному полю).
  • models.E015: ordering ссылается на несуществующее поле <field name>.
  • models.E016: index_together/unique_together ссылается на поле <field_name>, которое не локально для модели <model>.
  • models.E017: Модель-прокси <model> содержит поля модели.
  • models.E018: Сгенерированное имя столбца слишком длинное для поля <field>. Максимальная длина — <maximum length> для базы данных <alias>.
  • models.E019: Сгенерированное имя столбца слишком длинное для поля M2M <M2M field>. Максимальная длина — <maximum length> для базы данных <alias>.
  • models.E020: Метод класса <model>.check() в настоящее время переопределён.

Поля

  • fields.E001: Имена полей не должны оканчиваться на символ подчёркивания.
  • fields.E002: Имена полей не должны содержать "__".
  • fields.E003: pk — зарезервированное слово, которое нельзя использовать в качестве имени поля.
  • fields.E004: choices должно быть итерируемым объектом (например, списком или кортежем).
  • fields.E005: choices должно быть итерируемым объектом, возвращающим кортежи (actual value, human readable name).
  • fields.E006: db_index должно быть None, True или False.
  • fields.E007: Первичные ключи не должны содержать null=True.
  • fields.E100: AutoField должны устанавливать primary_key=True.
  • fields.E110: BooleanField не принимают значения null.
  • fields.E120: CharField должны определять атрибут max_length.
  • fields.E121: max_length должно быть положительным целым числом.
  • fields.W122: max_length игнорируется при использовании с IntegerField.
  • fields.E130: DecimalField должны определять атрибут decimal_places.
  • fields.E131: decimal_places должно быть неотрицательным целым числом.
  • fields.E132: DecimalField должны определять атрибут max_digits.
  • fields.E133: max_digits должно быть неотрицательным целым числом.
  • fields.E134: max_digits должно быть больше или равно decimal_places.
  • fields.E140: FilePathField должны иметь установленным либо allow_files, либо allow_folders в значение True.
  • fields.E150: GenericIPAddressField не могут принимать пустые значения, если не допускаются значения null, так как пустые значения хранятся как null.
  • fields.E160: Опции auto_now, auto_now_add, и default взаимно исключают друг друга. Должна присутствовать только одна из них.
  • fields.W161: Предоставлено исправленное значение по умолчанию.
  • fields.W900: IPAddressField устарело. Поддержка его (кроме исторических миграций) будет удалена в Django 1.9.

Поля файлов

  • fields.E200: unique — некорректный аргумент для FileField.
  • fields.E201: primary_key — некорректный аргумент для FileField.
  • fields.E210: Невозможно использовать ImageField, так как Pillow не установлен.

Связанные поля

  • fields.E300: Поле определяет отношение с моделью <model>, которая либо не установлена, либо является абстрактной.
  • fields.E301: Поле определяет отношение с моделью <model>, которая была заменена.
  • fields.E302: Доступ к полю <field name> конфликтует с полем <field name>.
  • fields.E303: Имя обратного запроса для поля <field name> конфликтует с полем <field name>.
  • fields.E304: Имя поля <field name> конфликтует с доступом к <field name>.
  • fields.E305: Имя поля <field name> конфликтует с именем обратного запроса для <field name>.
  • fields.E306: Имя связи должно быть допустимым идентификатором Python или заканчиваться на '+'.
  • fields.E310: Ни одно из полей <field1>, <field2>, ... в модели <model> не имеет ограничения unique=True.
  • fields.E311: <model> должен установить unique=True, так как на него ссылается ForeignKey.
  • fields.E320: Поле указывает на on_delete=SET_NULL, но не может быть пустым.
  • fields.E321: Поле указывает на on_delete=SET_DEFAULT, но не имеет значения по умолчанию.
  • fields.E330: ManyToManyField не могут быть уникальными.
  • fields.E331: Поле указывает на много-ко-многие отношения через модель <model>, которая не установлена.
  • fields.E332: Много-ко-многие поля со промежуточными таблицами не должны быть симметричными.
  • fields.E333: Модель используется как промежуточная модель <model>, но она имеет более двух внешних ключей к <model>, что является неоднозначным. Вы должны указать, какие два внешних ключа Django должен использовать, используя ключевой аргумент through_fields.
  • fields.E334: Модель используется как промежуточная модель <model>, но она имеет более одного внешнего ключа от <model>, что является неоднозначным. Вы должны указать, какой внешний ключ Django должен использовать, используя ключевой аргумент through_fields.
  • fields.E335: Модель используется как промежуточная модель <model>, но она имеет более одного внешнего ключа к <model>, что является неоднозначным. Вы должны указать, какой внешний ключ Django должен использовать, используя ключевой аргумент through_fields.
  • fields.E336: Модель используется в качестве промежуточной модели <model>, но она не имеет внешнего ключа к <model> или <model>.
  • fields.E337: Поле указывает на through_fields, но не предоставляет имена двух полей связи, которые должны использоваться для отношения через <model>.
  • fields.E338: Промежуточная модель <through model> не имеет поля <field name>.
  • fields.E339: <model>.<field name> не является внешним ключом к <model>.
  • fields.W340: null не оказывает влияния на ManyToManyField.
  • fields.W341: ManyToManyField не поддерживает validators.
  • fields.W342: Установка unique=True на ForeignKey имеет тот же эффект, что и использование OneToOneField.

Сигналы

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

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

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

  • 1_6.W001: Некоторые модульные тесты проекта могут не выполняться как ожидалось. Эта проверка была удалена в Django 1.8 из-за ложных срабатываний.
  • 1_6.W002: BooleanField не имеет значения по умолчанию. Эта проверка была удалена в Django 1.8 из-за ложных срабатываний.
  • 1_7.W001: Django 1.7 изменил глобальные значения по умолчанию для MIDDLEWARE_CLASSES. django.contrib.sessions.middleware.SessionMiddleware, django.contrib.auth.middleware.AuthenticationMiddleware, и django.contrib.messages.middleware.MessageMiddleware были удалены из значений по умолчанию. Если вашему проекту необходимы эти средства, вам следует настроить это значение.
  • 1_8.W001: Самостоятельные настройки TEMPLATE_* устарели в Django 1.8, и словарь TEMPLATES имеет приоритет. Вы должны поместить значения следующих настроек в ваш словарь по умолчанию TEMPLATES: TEMPLATE_DIRS, ALLOWED_INCLUDE_ROOTS, TEMPLATE_CONTEXT_PROCESSORS, TEMPLATE_DEBUG, TEMPLATE_LOADERS, TEMPLATE_STRING_IF_INVALID.

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

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

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

  • admin.E001: Значение raw_id_fields должно быть списком или кортежем.
  • admin.E002: Значение raw_id_fields[n] относится к <field name>, что не является атрибутом <model>.
  • admin.E003: Значение raw_id_fields[n] должно быть ForeignKey или ManyToManyField.
  • admin.E004: Значение fields должно быть списком или кортежем.
  • admin.E005: Оба fieldsets и fields заданы.
  • admin.E006: Значение fields содержит дублирующее(ые) поле(я).
  • 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] не может включать ManyToManyField <field name>, так как это поле вручную указывает модель связи.
  • admin.E014: Значение exclude должно быть списком или кортежем.
  • admin.E015: Значение exclude содержит дублирующее(ые) поле(я).
  • admin.E016: Значение form должно наследоваться от BaseModelForm.
  • admin.E017: Значение filter_vertical должно быть списком или кортежем.
  • admin.E018: Значение filter_horizontal должно быть списком или кортежем.
  • admin.E019: Значение filter_vertical[n]/filter_vertical[n] относится к <field name>, что не является атрибутом <model>.
  • admin.E020: Значение filter_vertical[n]/filter_vertical[n] должно быть ManyToManyField.
  • admin.E021: Значение radio_fields должно быть словарем.
  • admin.E022: Значение radio_fields относится к <field name>, что не является атрибутом <model>.
  • admin.E023: Значение radio_fields относится к <field name>, что не является ForeignKey, и не имеет определения choices.
  • admin.E024: Значение radio_fields[<field name>] должно быть либо admin.HORIZONTAL или admin.VERTICAL.
  • admin.E025: Значение view_on_site должно быть вызываемой функцией или булевым значением.
  • admin.E026: Значение prepopulated_fields должно быть словарем.
  • admin.E027: Значение prepopulated_fields относится к <field name>, что не является атрибутом <model>.
  • admin.E028: Значение prepopulated_fields относится к <field name>, которое не должно быть DateTimeField, ForeignKey или ManyToManyField.
  • admin.E029: Значение prepopulated_fields[<field name>] должно быть списком или кортежем.
  • admin.E030: Значение prepopulated_fields относится к <field name>, что не является атрибутом <model>.
  • admin.E031: Значение ordering должно быть списком или кортежем.
  • admin.E032: Значение ordering имеет маркер случайной сортировки ?, но также содержит и другие поля.
  • admin.E033: Значение ordering относится к <field name>, что не является атрибутом <model>.
  • admin.E034: Значение readonly_fields должно быть списком или кортежем.
  • admin.E035: Значение readonly_fields[n] не является вызываемой функцией, атрибутом <ModelAdmin class>, или атрибутом <model>.

ModelAdmin

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

  • admin.E101: Значение save_as должно быть булевым.
  • admin.E102: Значение save_on_top должно быть булевым.
  • admin.E103: Значение inlines должно быть списком или кортежем.
  • admin.E104: <InlineModelAdmin class> должен наследоваться от BaseModelAdmin.
  • admin.E105: <InlineModelAdmin class> должен иметь атрибут model.
  • admin.E106: Значение <InlineModelAdmin class>.model должно быть Model.
  • admin.E107: Значение list_display должно быть списком или кортежем.
  • admin.E108: Значение list_display[n] ссылается на <label>, которое не является вызываемым объектом, атрибутом <ModelAdmin class>, или атрибутом или методом <model>.
  • admin.E109: Значение list_display[n] не должно быть ManyToManyField.
  • 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: Значение list_editable[n] ссылается на <label>, которое не является атрибутом <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] ссылается на <field name>, которое не редактируется через админ-панель.
  • admin.E126: Значение search_fields должно быть списком или кортежем.
  • admin.E127: Значение date_hierarchy ссылается на <field name>, которое не является атрибутом <model>.
  • admin.E128: Значение date_hierarchy должно быть DateField или DateTimeField.

InlineModelAdmin

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

  • admin.E201: Нельзя исключить поле <field name>, так как оно является внешним ключом к родительской модели <app_label>.<model>.
  • admin.E202: <model> не имеет ForeignKey к <parent model>./ <model> имеет более одного ForeignKey к <parent model>.
  • 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 с использованием поля типа содержимого <field name> и поля идентификатора объекта <field name>.

Auth

  • auth.E001: REQUIRED_FIELDS должно быть списком или кортежем.
  • auth.E002: Поле, названное как USERNAME_FIELD для модели пользовательской модели, не должно быть включено в REQUIRED_FIELDS.
  • auth.E003: <field> должно быть уникальным, поскольку оно названо как USERNAME_FIELD.
  • auth.W004: <field> названо как USERNAME_FIELD, но оно не уникально.

Content Types

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

  • contenttypes.E001: Идентификатор объекта GenericForeignKey ссылается на несуществующее поле <field>.
  • contenttypes.E002: Тип содержимого GenericForeignKey ссылается на несуществующее поле <field>.
  • contenttypes.E003: <field> не является ForeignKey.
  • contenttypes.E004: <field> не является ForeignKey к contenttypes.ContentType.

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

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

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

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

  • security.W001: У вас нет django.middleware.security.SecurityMiddleware в вашем MIDDLEWARE_CLASSES, поэтому настройки SECURE_HSTS_SECONDS, SECURE_CONTENT_TYPE_NOSNIFF, SECURE_BROWSER_XSS_FILTER и SECURE_SSL_REDIRECT не будут иметь эффекта.
  • security.W002: У вас нет django.middleware.clickjacking.XFrameOptionsMiddleware в вашем MIDDLEWARE_CLASSES, поэтому ваши страницы не будут предоставляться с заголовком 'x-frame-options'. Если для вашего сайта нет веской причины предоставляться в фрейме, рассмотрите возможность включения этого заголовка для предотвращения атак «кликабельных фреймов».
  • security.W003: Похоже, вы не используете встроенную защиту от межсайтовых поддельных запросов Django через middleware (django.middleware.csrf.CsrfViewMiddleware отсутствует в вашем MIDDLEWARE_CLASSES). Включение 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: Настройка SECURE_BROWSER_XSS_FILTER не установлена в True, поэтому ваши страницы не будут предоставляться с заголовком 'x-xss-protection: 1; mode=block'. Рекомендуется включить этот заголовок для активации фильтрации XSS в браузере и предотвращения атак XSS.
  • security.W008: Настройка SECURE_SSL_REDIRECT не установлена в True. Если ваш сайт должен быть доступен как по SSL, так и без него, установите это значение в True или настройте балансировщик нагрузки или обратный прокси-сервер для перенаправления всех соединений на HTTPS.
  • security.W009: У вас SECRET_KEY содержит менее 50 символов или менее 5 уникальных символов. Пожалуйста, сгенерируйте длинный и случайный SECRET_KEY, иначе многие критически важные для безопасности функции Django будут уязвимы к атакам.
  • security.W010: У вас есть django.contrib.sessions в вашем INSTALLED_APPS, но вы не установили SESSION_COOKIE_SECURE в True. Использование файла cookie сессии только с защитой SSL затрудняет перехват сеансов пользователей сетевыми шпионами.
  • security.W011: У вас есть django.contrib.sessions.middleware.SessionMiddleware в вашем MIDDLEWARE_CLASSES, но вы не установили SESSION_COOKIE_SECURE в True. Использование файла cookie сессии только с защитой SSL затрудняет перехват сеансов пользователей сетевыми шпионами.
  • security.W012: SESSION_COOKIE_SECURE не установлено в True. Использование файла cookie сессии только с защитой SSL затрудняет перехват сеансов пользователей сетевыми шпионами.
  • security.W013: У вас есть django.contrib.sessions в вашем INSTALLED_APPS, но вы не установили SESSION_COOKIE_HTTPONLY в True. Использование файла cookie сессии с атрибутом HttpOnly затрудняет перехват сеансов пользователей атаками XSS.
  • security.W014: У вас есть django.contrib.sessions.middleware.SessionMiddleware в вашем MIDDLEWARE_CLASSES, но вы не установили SESSION_COOKIE_HTTPONLY в True. Использование файла cookie сессии с атрибутом HttpOnly затрудняет перехват сеансов пользователей атаками XSS.
  • security.W015: SESSION_COOKIE_HTTPONLY не установлено в True. Использование файла cookie сессии с атрибутом HttpOnly затрудняет перехват сеансов пользователей атаками XSS.
  • security.W016: CSRF_COOKIE_SECURE не установлено в True. Использование файла cookie CSRF только с защитой SSL затрудняет перехват токена CSRF сетевыми шпионами.
  • security.W017: CSRF_COOKIE_HTTPONLY не установлено в True. Использование файла cookie CSRF с атрибутом HttpOnly затрудняет перехват токена CSRF атаками XSS.
  • security.W018: В развертывании не должно быть установлено DEBUG в значение True.
  • security.W019: У вас есть django.middleware.clickjacking.XFrameOptionsMiddleware в вашем MIDDLEWARE_CLASSES, но X_FRAME_OPTIONS не установлено в 'DENY'. Значение по умолчанию — 'SAMEORIGIN', но если для вашего сайта нет веской причины предоставлять другие части сайта во фрейме, измените его на 'DENY'.

Сайты

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

  • sites.E001: CurrentSiteManager не удалось найти поле с именем <field name>.
  • sites.E002: CurrentSiteManager не может использовать <field>, так как это не ForeignKey или ManyToManyField.

База данных

MySQL

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

  • mysql.E001: MySQL не позволяет уникальным CharFields иметь max_length > 255.

© Django Software Foundation and individual contributors
Licensed under the BSD License.
https://docs.djangoproject.com/en/1.8/ref/checks/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API