python - 覆盖 django 管理事件日志

标签 python django django-models django-admin

如何覆盖 django 管理主页以隐藏某些事件。

例如:

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

class ActiveLogManager(models.Manager):

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

但是我不知道把管理器放在哪里。

最佳答案

admin主页日志的queryset由模板标签django.contrib.admin.templatetags.log.get_admin_log定义.

因此您可以通过在 yourapp/templatetags/log.py 中重新定义它来覆盖 log 模板标签库(yourapp 必须在 django.contrib.admin 在你的 INSTALLED_APPS 中,所以你的 log 模板标签库优先于 django.contrib.admin's).

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

关于python - 覆盖 django 管理事件日志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36066851/

相关文章:

python - 删除 Pandas 中所有只有 1 值的变量

python - Django - 在一个 View 中有两种不同形式并调用函数的问题

python - 在 Django 中出现 NoReverseMatch 错误

django - 可选的ImageField(Django)

python - 更改 Django 管理员 list_display 中的可点击字段

django-models - 如何禁用从 django 中的一个应用程序模型迁移

python - 提取BeautifulSoup中标题后面的字符串

python - 使用 Boto3 配置文件覆盖 S3 端点

python - Python matplotlib 绘图顶部和底部的空白

django - Kubernetes + Django/PostgreSQL - 当我将它部署到 Kubernetes 集群时如何指定我的 PostgreSQL 数据库的主机