2009-09-09 623 views
1

我使用django admin为我的用户添加他们的模型对象,因为您知道django正在保持用户操作(如添加项目的用户)的轨道。对于一个对象,在管理面板外的自定义视图中,我需要显示加法器的用户名。获取对象的历史记录

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

干杯

+0

我做了一个重要的编辑,确保id匹配该特定模型的id(因为不同的模型可以包含具有相同id的对象)。 – 2009-09-09 08:12:48

回答

2

这只是一个粗略的草图,但应该是相当接近你需要为您的看法:

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 }} 
+0

这看起来很有希望,因为我的项目可以有多个动作,我如何检索“添加”动作,我一直在检查“django_admin_log”的数据库结构,看起来像“动作标志”保持动作。 – Hellnar 2009-09-09 08:11:59

+0

from django.contrib.admin.models import ADDITION filter(...,action_flag = ADDITION) – 2009-09-09 09:04:41

+0

已编辑的答案包括ADDITION过滤器 – 2009-09-09 09:06:12

0

如果”除了上面提到的功能之外,我正在使用名为django-reversion的应用程序,除了使日志可访问外,它还提供了c的副本挂起(顺便说一句,也可以用来生成一个带或不带HTML的DIFF显示更改)。