[英]Override django admin activity log
How can I override django admin main page in order to hide certain activities.如何覆盖 django 管理主页以隐藏某些活动。
For example:例如:
I don't want the admin to see which users he created on the admin main page.I'm thinking I could override the get_queryset method like this:我不希望管理员看到他在管理员主页上创建了哪些用户。我想我可以像这样覆盖 get_queryset 方法:
class ActiveLogManager(models.Manager):
get_queryset():
entries = LogEntry.objects.exclude(content_type=4, action_flag=1)
return entries
But I don't know where to place the admin manager.但我不知道把管理经理放在哪里。
The queryset of admin main page logs is defined by the template tag django.contrib.admin.templatetags.log.get_admin_log
.管理主页日志的查询集由模板标签
django.contrib.admin.templatetags.log.get_admin_log
定义。
So you can override the log
template tags library by redefining it in yourapp/templatetags/log.py
( yourapp
must be before django.contrib.admin
in your INSTALLED_APPS
, so that your log
template tags library takes the precedence over django.contrib.admin
's).因此,您可以通过在
yourapp/templatetags/log.py
重新定义log
模板标签库来覆盖它(您的应用yourapp
必须在INSTALLED_APPS
django.contrib.admin
之前,以便您的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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.