如何覆盖django admin主页以隐藏某些活动。
例如:
我不希望管理员在管理主页上看到他创建了哪些用户。我认为我可以覆盖get_queryset方法,如下所示:
class ActiveLogManager(models.Manager):
get_queryset():
entries = LogEntry.objects.exclude(content_type=4, action_flag=1)
return entries
但我不知道管理员经理的位置。
答案 0 :(得分:2)
管理主页日志的查询集由模板标记django.contrib.admin.templatetags.log.get_admin_log
定义。
因此,您可以通过在log
中重新定义yourapp/templatetags/log.py
模板标记库来覆盖yourapp
模板标记库(django.contrib.admin
必须在INSTALLED_APPS
log
之前,以便您的django.contrib.admin
模板标记库优先于from django.contrib.admin.templatetags.log import * # noqa
def __AdminLogNode_render(self, context):
if self.user is None:
entries = LogEntry.objects.all()
else:
user_id = self.user
if not user_id.isdigit():
user_id = context[self.user].pk
entries = LogEntry.objects.filter(user__pk=user_id)
entries = entries.exclude(content_type=4, action_flag=1)
context[self.varname] = entries.select_related('content_type', 'user')[:int(self.limit)]
return ''
__AdminLogNode_render.__name__ = 'render'
AdminLogNode.render = __AdminLogNode_render
' s。
Ǧ