是否可以只在django admin中显示自定义权限?

时间:2012-11-27 16:25:38

标签: django

我想在Django管理界面中只显示自定义权限(我在模型中使用Meta类创建)。这可能吗?怎么样?

1 个答案:

答案 0 :(得分:0)

我会考虑创建自己的自定义视图来添加自定义权限,而不是尝试修改Django管理员。但是,如果您确定要使用Django管理员,可以尝试以下方法:

从子类UserChangeForm开始,并覆盖__init__方法。使用包含自定义权限的查询集设置self.fields['user_permissions'].queryset

from django.contrib.auth.forms import UserChangeForm

class MyUserChangeForm(UserChangeForm):
    def __init__(self, *args, **kwargs):
        super(MyUserChangeForm, self).__init__(*args, **kwargs)
        custom_permissions = ????
        self.fields['user_permissions'].queryset = custom_permissions

接下来,子类django.contrib.auth.admin.UserAdmin,并使用您的表单而不是UserChangeForm

from django.contrib.auth.admin import UserAdmin

class MyUserAdmin(UserAdmin):
    form = MyUserChangeForm

最后,取消注册默认UserAdmin,并注册您自己的。

admin.site.unregister(User)
admin.site.register(User, MyUserAdmin)