1

除了管理员之外,我正在使用 django-reversion 文档调用的低级 API来访问我自己的代码中的还原历史记录。为了存储元数据,我Revision通过设置自己的模型(包括OneToOneField(Revision). 到目前为止,一切都很好。

但是鉴于对 a 的引用Revision,我如何才能直接访问它之前的修订版?例如,要生成此修订版与前一个修订版之间的更改列表,有没有比回调reversion.get_for_object并搜索列表以查找我正在寻找的版本更有效的方法?

4

2 回答 2

5

Revision 对象有一个date_created属性,因此您可以编写一个查询来为您的对象选择给定修订版之前的单个最新修订版date_created。我基本上会复制低级 APIget_for_date函数的实现,但要进行一项更改——使用"date_created__lt"而不是"__lte"

def get_previous(object, date):
    """Returns the latest version of an object prior to the given date."""
    versions = reversion.get_for_object(object)
    versions = versions.filter(revision__date_created__lt=date)
    try:
        version = versions[0]
    except IndexError:
        raise Version.DoesNotExist
    else:
        return version
于 2012-01-31T03:55:26.037 回答
0

版本对象有一个修订属性,它有两个方法,“get_next_by_date_created”和“get_previous_by_date_created”,你可以用它们来遍历版本历史。

version.revision.get_previous_by_date_created()
于 2014-11-11T21:15:51.850 回答