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>.

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

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

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

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

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

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

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