如何在 django admin 中获取对象的历史记录?

Posted

技术标签:

【中文标题】如何在 django admin 中获取对象的历史记录?【英文标题】:How to get the history of an object in django admin? 【发布时间】:2014-08-28 00:38:52 【问题描述】:

我在我的一个模型中添加了一个新字段,我想用执行特定操作的用户的名称来填写它(这里,验证者:USER)。

我看到的最简单的方法是从该信息已经存在的历史记录中获取它。

例如,从这张图片中,如果用户执行“更改电子邮件”操作,我会得到用户“管理员”

如何获取对象的历史记录(如 django Admin 中所见)?

【问题讨论】:

【参考方案1】:

该信息存储在LogEntry 模型中。

from django.contrib.admin.models import LogEntry

它的定义是:

class LogEntry(models.Model):
    action_time = models.DateTimeField(_('action time'), auto_now=True)
    user = models.ForeignKey(settings.AUTH_USER_MODEL)
    content_type = models.ForeignKey(ContentType, blank=True, null=True)
    object_id = models.TextField(_('object id'), blank=True, null=True)
    object_repr = models.CharField(_('object repr'), max_length=200)
    action_flag = models.PositiveSmallIntegerField(_('action flag'))
    change_message = models.TextField(_('change message'), blank=True)

    objects = LogEntryManager()

更多信息在source code

确保您在 ReadOnly 模式下访问它,否则您会弄乱您的日志历史记录。

【讨论】:

以上是关于如何在 django admin 中获取对象的历史记录?的主要内容,如果未能解决你的问题,请参考以下文章

Django Admin Cookbook-38如何获取特定对象的Django Admin后台URL

Django 1.5 扩展 admin/change_form.html 对象工具

Django-admin:如何在记录更改列表中显示指向对象信息页面的链接而不是编辑表单?

如何在 Django Admin 中获取 ManyToManyField 的当前值?

在 Django Admin 中过滤多对多框

Django admin - 如何获取模板标签中的所有注册模型?