Чтобы отобразить другой набор запросов, вы можете переопределить ModelAdmin.queryset ().
Почему бы просто не удалить разрешение на редактирование у рассматриваемых пользователей?Вы также можете переопределить представления «добавить» и «изменить»:
Это «официальные» хуки, которые с меньшей вероятностью сломаются в будущем.
По своей сути, интерфейс администратора Django предназначен для одного действия:
Редактирование доверенных пользователейструктурированный контент.
Да, это чрезвычайно просто - но эта простота основана на целом ряде предположений.Вся философия интерфейса администратора Django вытекает непосредственно из этих предположений, поэтому давайте углубимся в подтекст этой фразы в следующих разделах.«Доверенные пользователи…»
Интерфейс администратора предназначен для использования людьми, которым вы, разработчик, доверяете.Это не просто означает «люди, которые были аутентифицированы»;это означает, что Django предполагает, что вашим редакторам контента можно доверять, чтобы они поступали правильно.
Это, в свою очередь, означает, что не существует процесса утверждения для редактирования контента - если вы доверяете своим пользователям, никто не должен одобрять их изменения,Еще одним следствием является то, что система разрешений, хотя и мощная, не поддерживает ограничение доступа для каждого объекта на момент написания этой статьи.Если вы доверяете кому-то редактировать свои собственные истории, вы доверяете этому пользователю не редактировать чужие истории без разрешения.
«… редактирование…»
ПервичнаяЦель интерфейса администратора Django - позволить людям редактировать данные.Поначалу это кажется очевидным, но, опять же, оно имеет некоторые тонкие и мощные последствия.
Например, хотя интерфейс администратора весьма полезен для просмотра данных (как только что описано), он не предназначен для этой цели.Например, обратите внимание на отсутствие разрешения «просматривать» (см. Главу 12).Джанго предполагает, что если людям разрешено просматривать контент в интерфейсе администратора, им также разрешено редактировать его.
Еще одна важная вещь, на которую следует обратить внимание, - это отсутствие чего-либо, даже удаленно приближающегося к «рабочему процессу».данная задача требует ряда шагов, нет поддержки для принудительного выполнения этих шагов в любом конкретном порядке.Интерфейс администратора Django фокусируется на редактировании, а не на действиях, связанных с редактированием.Такое избегание рабочего процесса также проистекает из принципа доверия: философия интерфейса администратора заключается в том, что рабочий процесс - это проблема персонала, а не то, что должно быть реализовано в коде.
Наконец, обратите внимание на отсутствие агрегирования в интерфейсе администратора.То есть не поддерживается отображение итогов, средних значений и т. Д.Опять же, интерфейс администратора предназначен для редактирования - ожидается, что вы напишете пользовательские представления для всех остальных.
«… структурированный контент»
Как и для остальныхDjango, интерфейс администратора хочет, чтобы вы работали со структурированными данными.Таким образом, он поддерживает только редактирование данных, хранящихся в моделях Django;для чего-либо еще, например данных, хранящихся в файловой системе, вам понадобятся пользовательские представления.
Полный останов
Теперь уже должно быть ясно, что интерфейс администратора Django делаетнестараться быть всем для всех; вместо этого мы решили сосредоточиться на чем-то одном и делать это очень хорошо.
Когда речь заходит о расширении интерфейса администратора Django, большая часть той же философии верна (обратите внимание, что «расширяемость» нигде не отражается в наших целях). Поскольку пользовательские представления Django могут делать все что угодно, и поскольку они могут быть легко визуально интегрированы в интерфейс администратора (как описано в следующем разделе), встроенные возможности для настройки интерфейса администратора несколько ограничены по дизайну.
Вы должны иметь в виду, что интерфейс администратора является «просто приложением», хотя и очень сложным. Он не делает ничего, что любой разработчик Django с достаточным временем не мог бы воспроизвести. Вполне возможно, что в будущем кто-то разработает другой интерфейс администратора, основанный на другом наборе предположений и, следовательно, будет вести себя по-другому.
Наконец, мы должны отметить, что на момент написания этой статьи разработчики Django работали над новой версией интерфейса администратора, которая обеспечивает гораздо большую гибкость в настройке. К тому времени, как вы прочтете это, эти новые функции могут появиться в добросовестном дистрибутиве Django. Чтобы узнать, спросите кого-нибудь из сообщества Django, интегрирована ли ветка «newforms-admin».
Приложение администратора было значительно улучшено, чтобы обеспечить большую гибкость в настройке, но IMHO большая часть "Zen of Admin" все еще остается верной.