4
A
回答
6
我不知道我知道你想要做什麼,但如果是在你的心中是有內置的教師用戶略有不同工作的用戶管理頁面,那麼我相信你必須要延長UserAdmin
,並覆蓋queryset
方法。
class TeacherSpecificUserAdmin(UserAdmin):
def queryset(self, request):
if request.user.is_teacher():
return Teacher.objects.filter(pk=request.user.pk)
return UserAdmin.queryset(self, request)
這會照顧禁止教師進行編輯或刪除其他記錄的,因爲如果你在ModelAdmin
代碼,change_view
和delete_view
方法看使用查詢集從queryset
方法返回去更改或刪除的對象。
需要再調整一次,因爲用於更改UserAdmin
中的密碼的視圖不會使用與其他視圖相同的系統來更改對象。只需在您的新課程中覆蓋它:
...
def user_change_password(self, request, id):
if request.user.is_teacher() and request.user.pk != int(id):
# PermissionDenied is in django.core.exceptions
raise PermissionDenied
return UserAdmin.user_change_password(self, request, id)
...
之後,您只需阻止教師添加新用戶或刪除他們自己的記錄。做,要麼使用默認,或通過重寫has_add_permission
和has_delete_permission
方法。
看看ModelAdmin
的源代碼,如果你想要更多的信息(在contrib/admin/options.py
)。
1
目前沒有簡單的方法來做到這一點,但object level permissions即將在Django 1.2 - 即使你必須做一些工作,讓它在管理員工作。
幸運的是有一個Django Advent article這可以解釋你需要做什麼。
3
有可能是沒有辦法做到這一點的生成。
權限每對象類型的全局設置,而不是每個特定對象實例。例如,它可以說「瑪麗可以修改的新聞故事,」但它不是目前可以說「瑪麗可以修改的新聞故事,但只有那些她創造自己」或者「瑪麗只能改變有一定的地位新聞報道,出版日期或ID。「後者的功能是Django開發人員目前正在討論的內容。
但是,顯然,object level permissions即將到來。
相關問題
- 1. 如何防止用戶更改/刪除其他用戶數據
- 2. 管理SP2010用戶配置文件作爲用戶配置文件管理員
- 3. 如何防止用戶表單進入其他用戶配置文件
- 4. 如何禁止管理員更改Django admin中的實例?
- 5. 防止用戶在DNN上看到其他配置文件
- 6. 如何防止其他用戶下載/打開其他文件?
- 7. 如何防止用戶在改變ASP.NET其他用戶數據MVC
- 8. Django - 約會網站的用戶模型 - 管理員/員工+其他用戶
- 9. 在Django中擴展用戶配置文件。管理員創建用戶
- 10. 在Django管理員中,如何設置按用戶名搜索配置文件?
- 11. Facebook如何管理數據庫中的用戶配置文件?
- 12. 如何使用cancan停止用戶編輯其他用戶配置文件?
- 13. 允許管理員製作其他管理員用戶導軌
- 14. 防止網址篡改訪問其他用戶的數據
- 15. Django管理員用戶
- 16. 如何防止非管理員用戶禁用Outlook 2007Addin?
- 17. 防止用戶更改.gitignore文件?
- 18. 獲取其他用戶firebase的管理員用戶?
- 19. 用Wordpress管理用戶配置文件
- 20. DJANGO調用其他用戶的配置文件
- 21. 如何防止用戶編輯或刪除其他用戶帖子? Django的
- 22. 登錄的用戶訪問其他用戶的配置文件
- 23. 管理員用戶允許刪除和編輯其他用戶
- 24. Django刷新頁面如果其他用戶更改數據
- 25. 管理ASP.NET用戶配置文件
- 26. Django:用戶配置文件似乎是防止syncdb
- 27. 用戶擁有/管理其他用戶
- 28. 如何限制ActiveAdmin上指定管理員的新用戶創建(防止用戶創建更多用戶)
- 29. Wordpress將用戶更改爲管理員
- 30. 如何設置Django Admin在其用戶配置文件選項卡中顯示所有用戶的屬性?
+1 Thanks Clement!我試圖瞭解user_change_password()。閱讀代碼真的很值得。 – Viet 2010-02-18 12:16:19