在我的django管理部分,我想根据当前登录的用户类型显示不同版本的管理页面。我可以想出一些方法来解决这个问题,但我还没有想出任何一种方法。
也许我可以把逻辑放进管理员.模型管理员查看当前用户并动态更改“排除”字段。这样行吗?或者根据登录的用户运行不同的自定义模板,并让模板包含/排除相应的字段。
我可以注册两个版本的管理员.模型管理员类,每种类型的用户一个,可能通过权限限制访问?但是权限系统似乎非常相信每个模型类有一组权限,所以我不知道如何改变这一点。
我可以获取一些用于呈现管理页面模板的小部件,并将它们包含在我自己的页面中,以完成我需要强大用户才能完成的一项特定工作。
如果您对此有任何建议,我们将不胜感激。
谢谢你的提示。我是这样做的。。。
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)