在我的django管理部分,我想顯示不同版本的管理頁面,取決於當前登錄的用戶類型。我可以想到幾種方法可能工作,但還沒有想出如何做任何他們。同一模型的Django管理頁面的多個版本
也許我可以把邏輯放入admin.ModelAdmin來查看當前用戶並動態改變'exclude'字段。那樣有用嗎?或者,也可以根據登錄的用戶運行不同的自定義模板,並根據需要使模板包含/排除字段。
我可以註冊admin.ModelAdmin類的兩個版本,每種類型的用戶都有一個版本,並且可能通過權限限制訪問權限?但是權限系統似乎深信每個模型類的一組權限,所以我不知道如何改變它。
我可以抓住一些用於呈現管理頁面模板的小部件,並將它們包含在我自己的頁面中,這樣做是我需要強大用戶才能完成的一項特定工作。
我可以設置多個AdminSites並通過url/view系統限制對它們的訪問。但後來我不知道如何註冊不同AdminSites的不同Admin.ModelAdmin類。
任何意見,將不勝感激。
回答
謝謝你的提示。以下是我做到了......
def get_form(self, request, obj=None, **kwargs):
"""This dynamically inserts the "owners" field into the exclude list
if the current user is not superuser.
"""
if not request.user.is_superuser:
if self.exclude:
self.exclude.append('owners')
else:
self.exclude = ['owners']
else:
# Necessary since Admin objects outlive requests
try:
self.exclude.remove('owners')
except:
pass
return super(OwnersModelAdmin,self).get_form(request, obj=None, **kwargs)
謝謝。這有幫助。我在上面的問題中包含了我的代碼以供參考。 – Leopd 2010-09-29 18:52:28