用戶編輯頁面中是否有更改權限列表的權限?我不想顯示所有權限,例如管理日誌條目或授權組等。 如何修改主要查詢集以排除其中的一些內容?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管理員 - 通過權限限制用戶查看