【问题标题】:How to access comments and user from django reversion object如何从 django reversion 对象访问评论和用户
【发布时间】:2015-04-01 12:09:29
【问题描述】:

如何从一个还原对象访问 cmets 和用户?

我使用这个来创建一个还原

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']

【问题讨论】:

    标签: django reversion


    【解决方案1】:

    检查Version 对象的revision 属性。请注意,获取特定对象objVersions 列表的常用方法是使用reversion.get_for_object(obj) 方法。

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

    【讨论】:

      【解决方案2】:

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

      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)
      

      如果您想要一条路线,而不是在您的终端中打印,它应该打印用户和评论作为 json 添加附加到上述功能

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-01-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-12-23
        • 2011-04-08
        • 1970-01-01
        相关资源
        最近更新 更多