1

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

4

1 回答 1

1

我会考虑创建自己的自定义视图来添加自定义权限,而不是尝试修改 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

最后,取消注册 default UserAdmin,并注册你自己的。

admin.site.unregister(User)
admin.site.register(User, MyUserAdmin)
于 2012-11-27T17:29:23.533 回答