【问题标题】:Getting the history of an object获取对象的历史
【发布时间】:2009-09-09 07:21:54
【问题描述】:

我使用 django admin 为我的用户添加他们的模型对象,因为您知道 django 会跟踪用户操作,例如添加项目的用户。对于一个对象,在管理面板外的自定义视图中,我需要显示加法器的用户名。

如何获取/检索这些数据?

干杯

【问题讨论】:

  • 我做了一个重要的编辑,确保 id 与特定模型的 id 匹配(因为不同的模型可以包含具有相同 id 的对象)。

标签: django django-models django-admin


【解决方案1】:

这只是一个粗略的草图,但应该非常接近您的视图所需的内容:

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

def your_view(request):
    ...
    # This is your object that was modified
    my_obj = ...
    log_entry = LogEntry.objects.filter(
        object_id=my_obj.id,
        action_flag=ADDITION,
        content_type__id__exact=ContentType.objects.get_for_model(MyModel).id)
    ...

然后在你的模板中:

{{ log_entry.user.username }}

【讨论】:

  • 这看起来很有希望,因为我的项目可以有几个动作,我如何检索“添加”动作,我一直在检查“django_admin_log”的数据库结构,似乎“action_flag”保留了行动。
  • 从 django.contrib.admin.models 导入添加过滤器(..., action_flag=ADDITION)
  • 编辑答案以包括添加过滤器
【解决方案2】:

如果您希望添加上述功能之外的其他功能,我使用了一个名为 django-reversion 的应用程序,除了使日志可访问之外,它还提供了更改内容的副本(顺便说一下也可用于生成带有或不带有显示更改的 HTML 的 DIFF。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-10-07
    • 1970-01-01
    • 1970-01-01
    • 2014-08-28
    • 2011-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多