3

我正在使用 django-reversion。如何打印 ListView 中每个模型的所有修订?

我试过了

class RevisionListView(ListView):
    model = reversion.revisions.Version
    template_name = "revision_list.html"

并在我的模板中打印查询集

{% for version in version_list %}
    {{ version }}
{% endfor %}

它似乎有效,但我不知道如何获取到“原始对象”的链接(通过get_absolute_url)。似乎我得到了 object_id 和 content_type 但我不知道如何获取在models.py.

我可以打印特定对象的修订版本中的修订编号以及特定修订的编号吗?

我已经搜索过了,因为我认为其他人也有同样的问题,但我找不到任何东西。

4

1 回答 1

0

你有没有想过这个?Reversion 通过执行以下操作在内部执行此操作:

def history_view(self, request, object_id, extra_context=None):
    """Renders the history view."""
    # check if user has change or add permissions for model
    if not self.has_change_permission(request):
        raise PermissionDenied
    object_id = unquote(object_id) # Underscores in primary key get quoted to "_5F"
    opts = self.model._meta
    action_list = [
        {
            "revision": version.revision,
            "url": reverse("%s:%s_%s_revision" % (self.admin_site.name, opts.app_label, opts.module_name), args=(quote(version.object_id), version.id)),
        }
        for version
        in self._order_version_queryset(self.revision_manager.get_for_object_reference(
            self.model,
            object_id,
        ).select_related("revision__user"))
    ]
    # Compile the context.
    context = {"action_list": action_list}
    context.update(extra_context or {})
    return super(VersionAdmin, self).history_view(request, object_id, context)
于 2015-05-06T14:51:12.993 回答