用戶編輯頁面中是否有更改權限列表的權限?我不想顯示所有權限,例如管理日誌條目或授權組等。 如何修改主要查詢集以排除其中的一些內容?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. 在Django中管理人員權限
- 3. 調整django管理員默認權限
- 4. 更改註冊表沒有管理員權限
- 5. Django管理員列表顯示+ ForeignKey =空更改列表
- 6. 上修改更改列表Django管理
- 7. django管理員權限修改模型的屬性
- 8. 管理員權限錯誤
- 9. TFS/MSTest管理員權限
- 10. 管理員權限在php
- 11. 沒有管理員權限
- 12. Django管理對象權限
- 13. 更改列表顯示鏈接在Django管理員
- 14. Django管理員:在同一頁上的兩個更改列表
- 15. Django管理內嵌更改列表
- 16. 更改Django管理列表佈局
- 17. 用管理員權限重寫和更改文件
- 18. 在非管理員Mac上更改RealBASIC權限
- 19. 使用cmd從內部更改管理員權限
- 20. Django管理員 - 通過權限限制用戶查看
- 21. Django管理員密碼自動更改
- 22. Django管理員更改下拉標籤
- 23. 更改註冊表權限
- 24. 如何只允許管理員設置管理員權限?
- 25. WordPress管理員失去了一些管理員權限
- 26. django管理員列表過濾器限制元素
- 27. Django管理員列表編輯
- 28. 的Django如管理員列表視圖
- 29. django管理員列表頁面
- 30. 擴展Django管理模板 - 更改更改列表