用户编辑页面中是否有更改权限列表的权限?我不想显示所有权限,例如管理日志条目或授权组等。 如何修改主要查询集以排除其中的一些内容?Django管理员 - 更改权限列表
7
A
回答
9
我从this topic得到了这个想法,这也回答了你的问题,但它不是很清楚。
您必须覆盖用于可视化的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
你可以改变你的查询集的过滤器对任何你想要的: 例子:
# 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'])
您创建类之后,你有你的新创建的管理员来注册用户模式:
admin.site.unregister(User) # You must unregister first
admin.site.register(User, MyUserAdmin)
编辑: 我添加了来自Maik Hoepfel的评论,因为此代码在创建新用户时使django崩溃。
你可以在你的组编辑页面的权限列表相同,但你必须创建一个从GroupAdmin扩展另一个管理员,并更改form.base_fields['user_permissions']
与form.base_fields['permissions']
4
雷纳托的回答几乎是完美的。 Django Admin使用相同的表单向用户添加了一个两步过程,并且他的代码在第一步中失败,出现'user_permissions'的KeyError。
解决方法是很容易的,只需要使用下面的代码来代替:
def get_form(self, request, obj=None, **kwargs):
form = super(MyUserAdmin, self).get_form(request, obj, **kwargs)
# adding a User via the Admin doesn't include the permissions at first
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
相关问题
- 1. 限制Django管理员更改权限
- 2. 管理员权限
- 3. 在Django中管理人员权限
- 4. 调整django管理员默认权限
- 5. Django权限管理
- 6. 更改注册表没有管理员权限
- 7. Django管理员列表显示+ ForeignKey =空更改列表
- 8. 修改Django 1.6中“list_display_links”的URL管理员更改列表
- 9. 上修改更改列表Django管理
- 10. django管理员权限修改模型的属性
- 11. 管理django中的列表管理员
- 12. 没有管理员权限
- 13. 管理员权限错误
- 14. 保持管理员权限
- 15. Vb2012管理员权限
- 16. 管理员权限在php
- 17. C++降管理员权限
- 18. TFS/MSTest管理员权限
- 19. 管理员权限与笨
- 20. Django管理对象权限
- 21. 更改列表显示链接在Django管理员
- 22. Django管理员:在同一页上的两个更改列表
- 23. Django管理内嵌更改列表
- 24. 更改Django管理列表布局
- 25. 更改Django的管理员创建/更改表格布局
- 26. Django的管理员 - 权限不适合员工
- 27. 在非管理员Mac上更改RealBASIC权限
- 28. 用管理员权限重写和更改文件
- 29. 使用cmd从内部更改管理员权限
- 30. Django管理员 - 通过权限限制用户查看