2009-09-09 224 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顯示更改)。