我如何创建差异。 list_filters for superuser and staff user

时间:2018-03-15 12:14:47

标签: python django django-admin

在管理员中我想显示差异。 list_filter为超级用户和员工用户。怎么可能。

当超级用户登录时:

list_filter = ('is_active', 'membership_type', 'is_blocked')

对于权限有限的员工用户,list_filters应为:

list_filter = ('is_active',)

2 个答案:

答案 0 :(得分:4)

将此方法添加到Admin类

def get_list_filter(self, request):
    if request.user.is_superuser:
        return ('is_active', 'membership_type', 'is_blocked')
    return ('is_active',)

答案 1 :(得分:0)

我找到了上述问题的解决方案。我在changelist_view函数中更改了list_filters。

def changelist_view(self, request, extra_context=None):
    if request.user.is_superuser:
        self.list_filter = ('is_active', 'membership_type', 'is_blocked')
    else:
        self.list_filter = ('is_active',)
    return super(CustomUserAdmin, self).changelist_view(request)