Как получить текущее приложение, когда пользователь в админке Django? - PullRequest
0 голосов
/ 04 октября 2018

Мне нужно узнать, с какой страницы администратора (приложения) поступает текущий запрос в django admin.

В настоящее время request.resolver_match.app_name возвращает только «admin», а это не то, что мне нужно.Я заметил, что мое имя приложения находится в «view_name» и «url_name», но надежно ли проанализировать эти переменные для доступа к текущему имени приложения?Django 1.11 LTS

РЕДАКТИРОВАТЬ: Например, когда пользователь заходит на страницу администратора для моего приложения курса с помощью вышеуказанного метода, я все равно получаю только «admin» в моем запросе, который должен быть «курс», а не «admin».Моя конечная цель - скрыть некоторые поля модели моего приложения на странице администратора в зависимости от группы пользователей.

Спасибо

Ответы [ 2 ]

0 голосов
/ 04 октября 2018

С ModelAdmin у вас есть доступ к модели через self.model.Таким образом, в методе ModelAdmin вы можете получить имя приложения, используя self.model._meta.app_label.

I, вам нужно получить к нему доступ из шаблона, а не ModelAdmin, self.model._meta передается в контекст как opts.Таким образом, вы можете получить к нему доступ через {% if opts.app_label == "some_app" %}.

0 голосов
/ 04 октября 2018

Вы можете просто сделать это, отследив requested.user т.е. кто вошел в систему в данный момент.как-то так

if(requested.user=='admin'):
(show all fields)
else:
(show mentioned fields)

здесь вы ограничиваете доступ к полям ваших моделей на основе currently logged in user

...