2015-03-02 17 views
2

How to add django-reversion to an app developed using django and django-rest framework我已經添加下面的函數來獲取對象如何使用django reversion更改名稱後獲取之前的對象值?

的歷史
from django.http import HttpResponse 
from reversion.models import Version 
import json 

def history_list(request): 
    history_list = Version.objects.all().order_by('-revision__date_created') 

data = [] 
for i in history_list: 
    data.append({ 
     'date_time': str(i.revision.date_created), 
     'user': str(i.revision.user), 
     'object': i.object_repr, 
     'type': i.content_type.name, 
     'comment': i.revision.comment 
    }) 

data_ser = json.dumps(data) 
return HttpResponse(data_ser, content_type="application/json") 

How to add django-reversion to an app developed using django and django-rest framework我已經添加到歷史路線的urls.py。

當我訪問127.0.0.1:8000/history我得到的JSON數據作爲

[{"object": "someobject", "user": "someuseruser", "type": "sometype", "comment": "Changed name.", "date_time": "2015-03-02 18:04:58.368650+00:00"}] 

執行流:當我訪問127.0.0.1:8000/admin和上述對象的值改變爲「otherobject」。當我刷新127.0.0.1:8000/history。我得到一個更JSON場

[{"object": "otherobject", "user": "someuseruser", "type": "sometype", "comment": "Changed name.", "date_time": "2015-03-02 18:04:58.368650+00:00"}] 

下面是我被困一個多額外的字段添加到歷史記錄功能區:

我想多一個領域包括在歷史功能上面迭代。就像before_object:「」,即使在更改名稱之後也可以更改對象名稱。 例如: - from 127.0.0.1:8000/admin 我將對象名稱從「apple」更改爲「orange」。

當我訪問歷史路線127.0.0.1:8000/history

[{"object": "apple", "object_before_changed": ""null": "someuseruser", "type": "sometype", "comment": "Changed name.", "date_time": "2015-03-02 18:00:58.368650+00:00"}] 

我應該能夠看到如下

[{"object": "orange", "object before_changed": ""apple": "someuseruser", "type": "sometype", "comment": "Changed name.", "date_time": "2015-03-02 18:04:58.368650+00:00"}] 

回答

1

你只需要設置一個變量來保存以前項目並根據需要將其插入字典中。請注意,這使用getattr作爲獲取的previous_object的一種方式,並且如果沒有則安全地提供默認值(第一次迭代就是這種情況)。

data = [] 
previous_object = None 
for i in history_list: 
    data.append({ 
     'date_time': str(i.revision.date_created), 
     'user': str(i.revision.user), 
     'object': i.object_repr, 
     'previous_object': getattr(previous_object,'object_repr',None), 
     'type': i.content_type.name, 
     'comment': i.revision.comment 
    }) 
    previous_object = i 
+0

OUTPUT: - [{ 「previous_object」:空, 「註釋」: 「更改的名稱」, 「類型」: 「sometype。這時候」, 「用戶」: 「對待SomeUser」, 「對象」:「NEWOBJECT 「,」date_time「:」2015-03-03 01:16:00.529507 + 00:00「},{」previous_object「:」newobject「,」comment「:」更改名稱「,」type「:」sometype「 ,「user」:「someuser」,「object」:「someobject」,「date_time」:「2015-03-03 01:15:20.657896 + 00:00」}] 我想得到如下輸出: 例如: 原始對象:「蘋果」 我進入管理員並更改原始對象後:「orange」 它應該代表先前的對象:蘋果,原始對象:橙色 – Praneeth 2015-03-03 01:27:54

+0

將它編輯成您的問題,以便您可以正確格式化,很難理解。 – 2015-03-03 02:05:14

+0

我編輯了這個問題 – Praneeth 2015-03-03 15:57:46