【问题标题】:Adding a Log entry for an action by a user in a Django App在 Django 应用程序中为用户的操作添加日志条目
【发布时间】:2026-01-21 03:45:01
【问题描述】:

我需要为用户通过我的 django 应用程序中的视图对数据库所做的更改创建一个日志条目。

我已启用 django-admin 模块,我可以使用管理界面检索所做更改的日志,如下所示:

from django.contrib.admin.models import LogEntry
from django.contrib.contenttypes.models import ContentType

recentActions = LogEntry.objects.all()

for each in recentActions:
    print 'Action:', each.action_flag.__str__()
    print 'Message:', each.object_repr
    print 'Table:', ContentType.objects.get(id = each.content_type_id).name

我想为其他用户使用我的 django 应用程序中的视图执行的操作创建类似的日志条目。我该怎么做呢 ?

【问题讨论】:

  • 它是否还会记录对模型进行的操作,而不是来自管理员?

标签: python django django-admin


【解决方案1】:

你很亲密。您只需要创建新的LogEntry 对象并保存它们。 LogEntryobjects 上有一个快捷功能可以做到这一点。

from django.contrib.admin.models import LogEntry, ADDITION, CHANGE

LogEntry.objects.log_action(
            user_id=request.user.id,
            content_type_id=ContentType.objects.get_for_model(model_object).pk,
            object_id=object.id,
            object_repr=unicode(object.title),
            action_flag=ADDITION if create else CHANGE)

【讨论】:

  • 对于那些想知道的人,可用的action_flag 选项是ADDITIONCHANGEDELETION。见docs
  • 官方的Django实现可以在django.contrib.admin.optionssource找到。查找 ModelAdmin 方法:log_additionlog_changelog_deletion
最近更新 更多