rob*_*s85 7 django django-admin django-permissions
是否有可能在用户编辑页面中更改权限列表?我不想显示所有权限,例如管理员日志条目或身份验证组等.如何修改主查询集以排除其中的一些权限?
我从这个主题中得到了这个主题,它也回答了你的问题,但不是那么清楚.
您必须在用于可视化的UserAdmin表单中覆盖用户权限的查询集.
要做到这一点,最简单的方法是创建UserAdmin的子类并覆盖该get_form方法:
from django.contrib.auth.models import User
from django.contrib.auth.admin import UserAdmin
class MyUserAdmin(UserAdmin):
def get_form(self, request, obj=None, **kwargs):
# Get form from original UserAdmin.
form = super(MyUserAdmin, self).get_form(request, obj, **kwargs)
if 'user_permissions' in form.base_fields:
permissions = form.base_fields['user_permissions']
permissions.queryset = permissions.queryset.filter(content_type__name='log entry')
return form
Run Code Online (Sandbox Code Playgroud)
您可以根据需要更改查询集的过滤器:示例:
# Exclude admin and auth.
permissions.queryset = permissions.queryset.exclude(content_type__app_label__in=['admin', 'auth'])
# Only view permissions of desired models (Can be your models or Django's)
permissions.queryset = permissions.queryset.filter(content_type__model__in=['blog', 'post', 'user', 'group'])
Run Code Online (Sandbox Code Playgroud)
创建课程后,您必须使用新创建的管理员注册您的用户模型:
admin.site.unregister(User) # You must unregister first
admin.site.register(User, MyUserAdmin)
Run Code Online (Sandbox Code Playgroud)
编辑: 我添加了来自Maik Hoepfel的评论,因为这段代码使django在创建新用户时崩溃了.
你可以在你的组编辑页面的权限列表相同,但你必须创建一个从GroupAdmin扩展另一个管理员,并改变form.base_fields['user_permissions']与form.base_fields['permissions']
| 归档时间: |
|
| 查看次数: |
4370 次 |
| 最近记录: |