FAQ: Админка

Я не могу войти. Когда я ввожу правильные логин и пароль, меня снова перенаправляет на страницу входа без каких-либо сообщений об ошибках.

Куки авторизации неправильно добавились, потому что домен кук, который использует Django, не совпадает с доменов в браузере. Установите SESSION_COOKIE_DOMAIN в конфигурационном файле в значение домена. Например, если браузер обращается к «https://www.example.com/admin/», то в «myproject.settings» нужно установить SESSION_COOKIE_DOMAIN = „www.example.com“.

Я не могу войти. Когда я ввожу корректные логин и пароль, меня перенаправляет на страницу входа с ошибкой «Пожалуйста, укажите правильные логин и пароль».

Если вы всё же уверены, что логин и пароль правильные, то проверьте, что ваш аккаунт активен (is_active) и имеет нужные привилегии (is_staff = True). Входить в админку могут только пользователи, у которых эти два поля установлены в True.

Как я могу автоматически устанавливать значение поля для пользователя, который последним редактировал объект?

Класс ModelAdmin позволяет управлять сохранением объекта, используя информацию из запроса. Получив оттуда текущего пользователя и изменив метод save_model(), вы можете отредактировать поля объекта нужным образом. Подробнее можно посмотреть в the documentation on ModelAdmin methods.

Как запретить редактировать записи чужих пользователей?

Класс ModelAdmin предоставляет настройки, которые управляют видимостью и возможностью редактировать объекты в админке. Используя их и получая пользователя из запроса, get_queryse() и has_change_permission() могут быть использованы для обеспечения нужного доступа.

CSS и картинки для админки не подключаются через mod_wsgi, однако на сервере разработки всё выглядит отлично.

Смотри serving the admin files в разделе «How to use Django with mod_wsgi».

Фильтр «list_filter» содержит отношение многие-ко-многим, но он не показывается.

Django не будет отображать фильтр ManyToManyField, если есть менее двух связанных объектов.

Например, если list_filter включает в себя sites, и есть только один сайт в базе данных, то фильтра «Site» вы не увидите, так как в этом случае он будет бесполезен.

Некоторые объекты не появляются в админке.

Неверное количество строк может быть вызвано отсутствием значения для внешнего ключа или его неверной установкой через атрибут null=False. Если у вас есть запись с классом ForeignKey, указывающим на несуществующий объект, и этот ключ включён в список list_display, то запись может не показываться потому что модель Django не может найти соответствия на уровне базы данных.

Как я могу изменить функциональность интерфейса администратора?

У вас есть несколько настроек. Если вам нужна наверху комбинация из форм добавить/изменить, которые Django генерирует, то вы можете подключить JavaScript модуль через админ-класс модели, указав параметр js parameter. В нём содержится список адресов js модулей, которые будут подключены через тег <script>.

If you want more flexibility than is feasible by tweaking the auto-generated forms, feel free to write custom views for the admin. The admin is powered by Django itself, and you can write custom views that hook into the authentication system, check permissions and do whatever else they need to do.

Если вы хотите изменить внешний вид админки, то ознакомьтесь со следующими частыми вопросами.

Сгенерированная админка ужасна! Как её поменять?

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

Какие браузеры поддерживаются админкой?

Поддерживаются все браузеры из YUI’s A-grade за исключением IE6.

Между отображениями в разных браузерах могут быть небольшие стилистические различия. Например, некоторые браузеры могут не поддерживать скруглённые уголки. Это считается приемлемыми различиями в отображении.