用户在Django管理员中时如何获取当前应用?

时间:2018-10-04 07:59:13

标签: python django django-admin django-apps

我需要从Django管理中获取当前请求来自哪个管理页面(应用)。

当前request.resolver_match.app_name仅返回“ admin”,这不是我想要的。 我已经注意到我的应用程序名称位于“ view_name”和“ url_name”中,但是解析这些变量以访问当前应用程序名称是否可靠? Django 1.11 LTS

编辑:例如,当用户使用上述方法进入我的课程应用的管理页面时,我在请求中仍然仅获得“管理员”,应该是“课程”而不是“管理员”。我的最终目标是根据用户组将某些应用程序模型字段隐藏在管理页面中。

谢谢

2 个答案:

答案 0 :(得分:0)

您只需跟踪requested.user(即当前登录的人)即可完成此操作。 像这样

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

在这里,您基于currently logged in user

限制对模型字段的访问

答案 1 :(得分:0)

您可以通过ModelAdminself.model访问模型。因此,在ModelAdmin方法中,您可以使用self.model._meta.app_label获取应用名称。

我需要从模板而不是ModelAdmin访问它,self.model._meta作为opts传递到上下文。因此,您可以通过{% if opts.app_label == "some_app" %}访问它。