覆盖Django管理活动日志

2024-10-03 00:23:31 发布

您现在位置:Python中文网/ 问答频道 /正文

如何覆盖django管理主页以隐藏某些活动。在

例如:

我不想让管理员看到他在管理主页上创建了哪些用户。我想我可以像这样覆盖get_queryset方法:

class ActiveLogManager(models.Manager):

    get_queryset():
        entries = LogEntry.objects.exclude(content_type=4, action_flag=1)
        return entries

但我不知道行政经理该放在哪里。在


Tags: django方法用户getobjectsmodels管理员manager
1条回答
网友
1楼 · 发布于 2024-10-03 00:23:31

管理主页日志的查询集由模板标记^{}定义。在

因此,您可以重写log模板标记库,方法是在yourapp/templatetags/log.pyyourapp必须在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

相关问题 更多 >