FAQ: Админка

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

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

  • Установите SESSION_COOKIE_DOMAIN в конфигурационном файле в значение домена. Например, если браузер обращается к “http://www.example.com/admin/”, то в “myproject.settings” нужно установить SESSION_COOKIE_DOMAIN = ‘www.example.com’.

  • Некоторые браузеры (Firefox?) не принимают куки с сайтов без точек. Если вы запустили админку на “localhost” (или ином имени без точки), то попробуйте “localhost.localdomain” или “127.0.0.1”. Не забудьте также поправить SESSION_COOKIE_DOMAIN соответствующим образом.

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

Если вы всё же уверены, что логин и пароль правильные, то проверьте, что ваш аккаунт активен (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.

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