我想在Django管理界面中只显示自定义权限(我在模型中使用Meta类创建)。这可能吗?怎么样?
答案 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)