如何从django reversion对象访问注释和用户

时间:2015-02-02 14:08:18

标签: django reversion

如何从reversion对象访问注释和用户?

创建一个reversion我用这个

with transaction.atomic():
    with reversion.create_revision():
        reversion.set_user(request.user)
        reversion.set_comment("update event")
        form.save()

现在我想访问用户并发表评论......我试过了:

import reversion
revs = reversion.models.Version.objects.all()
rev1 = revs[0]
dir(rev1)
['DoesNotExist', 'MultipleObjectsReturned', '__class__', '__delattr__',
'__dict__', '__doc__', '__eq__', '__format__', '__getattribute__',
'__hash__', '__init__', u'__module__', '__ne__', '__new__', '__reduce__',
'__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__',
'__subclasshook__', '__unicode__', '__weakref__', '_base_manager',
'_default_manager', '_deferred', '_do_insert', '_do_update',
'_field_dict_cache', '_get_FIELD_display',
'_get_next_or_previous_by_FIELD', '_get_next_or_previous_in_order',
'_get_pk_val', '_get_unique_checks', '_meta', '_perform_date_checks',
'_perform_unique_checks', '_save_parents', '_save_table', '_set_pk_val',
'_state', 'clean', 'clean_fields', 'content_type', 'content_type_id',
'date_error_message', 'delete', 'field_dict', 'format', 'full_clean',
'id', 'object', 'object_id', 'object_id_int', 'object_repr',
'object_version', 'objects', 'pk', 'prepare_database_save', 'revert',
'revision', 'revision_id', 'save', 'save_base', 'serializable_value',
'serialized_data', 'unique_error_message', 'validate_unique']

2 个答案:

答案 0 :(得分:2)

检查revision对象的Version属性。请注意,获取特定对象Version的{​​{1}}列表的常用方法是使用obj方法。

另外,我写了一篇关于回归的相当全面的帖子(和其他类似的解决方案)@ http://spapas.github.io/2015/01/21/django-model-auditing/

答案 1 :(得分:0)

在视图中创建一个函数,如下所示

from reversion.models import Version
import json

def history_list(request)
 history_list = Version.objects.all().oreder_by('revision_date_created')
 data = []
 for i in history_list:
  data.append({
     'user': str(i.revision.user),
     'comment': i.revision.comment
  })
print(data)

如果你想要一个应该打印用户和评论的路线,而不是在你的终端上打印,而不是在上面添加上述功能

from django.http import HttpRespose
...............
...............
data_ser = json.dumps(data)
return HttpResponse(data_ser, content_type="application/json")