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

How to get current app when user is in Django admin?

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

目前 request.resolver_match.app_name 只有 returns "admin" 这不是我想要的。 我注意到我的应用程序名称在 'view_name' 和 'url_name' 中,但是解析这些变量以访问当前应用程序名称是否可靠? Django 1.11 LTS

编辑:例如,当用户使用上述方法进入我的课程应用程序的管理页面时,我仍然只在我的请求中得到 'admin',应该是 'course' 而不是 'admin' .我的最终目标是根据用户组在管理页面中隐藏我的一些应用程序模型字段。

谢谢

您可以简单地通过跟踪 requested.user 即谁当前登录来做到这一点。 像这样

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

此处您根据 currently logged in user

限制对您的模型字段的访问

ModelAdmin 您可以通过 self.model 访问该模型。在 ModelAdmin 方法中,您可以使用 self.model._meta.app_label.

获取应用程序名称

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

访问它