我有一个函数,它从 reversion.models 版本返回 json 数据作为历史记录。
from django.http import HttpResponse
from reversion.models import Version
from django.contrib.admin.models import LogEntry
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,
'field': i.revision.comment.split(' ')[-1],
'new_value_field': str(i.field_dict),
'type': i.content_type.name,
'comment': i.revision.comment
})
data_ser = json.dumps(data)
return HttpResponse(data_ser, content_type="application/json")
当我运行上面的代码片段时,我得到的输出 json 为
[{"type": "fruits", "field": "colour", "object": "anyobject", "user": "anyuser", "new_value_field": "{'price': $23, 'weight': 2kgs, 'colour': 'red'}", "comment": "Changed colour."}]
从上面的函数,
'comment': i.revision.comment
将 json 返回为“comment”:“changed colour”,颜色是我在函数中编写的字段,用于从评论中检索它
'field': i.revision.comment.split(' ')[-1]
但我认为从 field_dict 获取字段名和值是一种更好的方法
问题:从上面的 json 列表中,我想过滤 new_field_value 和 old_value。在 new_filed_value 中只有颜色的值。