You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从Django日志条目表获取用户名?django-auditlog模板取值求助

Django Auditlog 问题排查与解决方案

一、name字段无法显示的修复方法

django-auditlog的LogEntry模型本身没有name字段,你看到的actor_id是关联用户的ID值,要获取用户名称需要通过actor关联对象访问对应的用户字段:

  • 若要显示用户名,模板代码改成:
    {% for data in auditlog %}
        {{ data.actor_id }} - {{ data.actor.username }}
    {% endfor %}
    
  • 若存在无操作人的日志(actor为None),需添加判断避免模板报错:
    {% for data in auditlog %}
        {{ data.actor_id }} - {{ data.actor.username|default:"无操作人" }}
    {% endfor %}
    
  • 如果你想显示用户全名,可替换为{{ data.actor.get_full_name }}(前提是用户模型配置了全名字段)。

二、提取日志中所有用户名的方法

在视图函数中通过以下方式查询去重的用户名集合:

from auditlog.models import LogEntry
from django.contrib.auth.models import User

# 方式1:直接获取去重的用户名列表
usernames = LogEntry.objects.filter(actor__isnull=False).values_list('actor__username', flat=True).distinct()

# 方式2:获取对应的用户对象集合(如需更多用户信息)
users = User.objects.filter(id__in=LogEntry.objects.filter(actor__isnull=False).values_list('actor_id', flat=True)).distinct()

将查询结果传入模板后,即可在模板中遍历展示。

三、本地测试示例项目搭建

你可以快速搭建一个最小化测试项目排查配置问题:

  1. 创建新Django项目,安装依赖:pip install django-auditlog
  2. 在settings.py的INSTALLED_APPS中添加'auditlog'
  3. 给目标模型注册auditlog(以自带User模型为例):
    from django.contrib.auth.models import User
    from auditlog.registry import auditlog
    
    auditlog.register(User)
    
  4. 执行迁移:python manage.py makemigrations && python manage.py migrate
  5. 编写视图查询日志条目:
    from django.shortcuts import render
    from auditlog.models import LogEntry
    
    def audit_log_view(request):
        auditlog_entries = LogEntry.objects.all()
        return render(request, 'audit_log.html', {'auditlog': auditlog_entries})
    
  6. 编写测试模板验证字段显示,对比自己项目的配置差异,定位问题。

内容的提问来源于stack exchange,提问作者learner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 04:33:14