我有一个显示版本对象历史列表的功能,如下所示,我在https://github.com/praneethkumarpidugu/django-reversion/blob/master/rev_history/views.py#L1的公共仓库中有这个特定的 .py 文件:
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,
'type': i.content_type.name,
'comment': i.revision.comment
})
data_ser = json.dumps(data)
return HttpResponse(data_ser, content_type="application/json")
为了更改我访问了管理页面 127.0.0.1:8000/admin 的对象实体,我将表示“is_active”的布尔字段从 true 更改为 false。
现在,我来到历史页面 127.0.0.1:8000/history
我看到的json数据如下:
{"type": "model a", "date_time": "2015-03-04 15:58:36.141569+00:00", **"comment": "Changed is_active."**, "object": "ModelA object", "user": "admin1"}
可能有的解决方案:我希望将评论拆分为previous_value:“True”,“new_value”:“False”,“field”:“is_active”。
我的研究推动解决方案我深入研究了 reversion/models.py 的 Revision 类,看看是否有任何额外的争论来显示字段和值,但据我了解,我无法找到可以找到字段和值以供评论的线索. 供参考的是Revision的评论
comment = models.TextField(blank=True,
verbose_name=_("comment"),
help_text="A text comment on this revision.")
表示字段的解决方案:这可能看起来有点傻,但我只是侵入了我自己的评论数据以将字段表示为
'field': i.revision.comment.split(' ')[-1]
但是我仍然需要获取更改后的原始值和新值的字段值。