如何从Django中的Admin站点排除实例

时间:2015-04-20 21:23:25

标签: django

在Django中,我创建了另一个单独的管理站点。这就是我的SiteUserAdmin类:

class SiteUserAdmin(UserAdmin):
form = UserChangeForm
add_form = UserCreationForm

list_display = ('username' ,'email',)

fieldsets = (
    (None,{'fields':('username','email','password')}),('Permissions',{'fields':('is_active','is_admin_user','groups')})
)

在所有用户中,有超级用户" is_superuser = True"。反正有没有从管理站点的可编辑用户列表中隐藏这些超级用户? 换句话说,我不会从管理站点中排除其他字段,而是隐藏某些User用户的实例在管理站点中进行编辑。

2 个答案:

答案 0 :(得分:2)

如何覆盖get_queryset()方法。

class SiteUserAdmin(admin.ModelAdmin):
    def get_queryset(self, request):
        qs = super(SiteUserAdmin, self).get_queryset(request)
        if request.user.is_superuser:
            return qs
        return qs.filter(is_superuser=False)

文档:https://docs.djangoproject.com/en/1.8/ref/contrib/admin/#django.contrib.admin.ModelAdmin.get_queryset

答案 1 :(得分:2)

覆盖get_queryset()方法:

class SiteUserAdmin(UserAdmin):
    ...
    def get_queryset(self, request):
        qs = super(SiteUserAdmin, self).get_queryset(request)
        return qs.exclude(is_superuser=True)