Django Grappelli用户组条件仪表板

时间:2018-02-14 20:58:31

标签: django admin dashboard usergroups

在Django(1.11.10)中使用Grappelli(2.11.1)。 我精心设计了小型自定义仪表板,现在查看一些方法来改变元素的外观。 特别是我需要显示一些url-element

self.children.append(modules.LinkList(
    _('e-mail'),
    column=2,
    css_class=('grp-collapse grp-closed'),
    children=[
        {
            'title': _('gmail'),
            'url': 'gmail.com',
            'external': True,
        },
    ]
))

仅限指定组的用户并将其隐藏给其他用户。 我会以常规方式尝试使用auth.get_user(),但这取决于' request'。这对我来说是不可用的,或者至少是不可见的。 有什么方法可以使这个功能? 不管怎样,谢谢。

1 个答案:

答案 0 :(得分:0)

一种可行的解决方法(尽管几乎肯定有更好的方法):

首先,如果'django.template.context_processors.request'已经存在,请settings.TEMPLATES['OPTIONS']['context_processors']添加from grappelli.dashboard import modules, Dashboard class CustomDashboard(Dashboard): def init_with_context(self, context): request = context['request'] user = request.user groups = user.groups.all() if groups == "whatever condition you want": self.children.append( ... ) 。这会将请求添加到模板上下文中。

接下来,在init_with_context方法中对自定义仪表板进行更改,您现在可以访问该请求(因此请求.user)

{{1}}