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

tco*_*art 4 django django-models django-admin

我在我的一个模型中添加了一个新字段,我想用执行特定操作的用户的姓名填充它(此处,验证者:USER)。

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

只是为了让你确切地看到我在说什么页面

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

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

kar*_*ikr 5

该信息存储在LogEntry模型中。

from django.contrib.admin.models import LogEntry
Run Code Online (Sandbox Code Playgroud)

它的定义是:

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()
Run Code Online (Sandbox Code Playgroud)

源代码中的更多信息

确保您以只读模式访问它,否则您会弄乱您的日志历史记录。