我正在使用django-reversion文档调用low-level API的内容,以便在我自己的代码中访问reversion历史记录,除了admin。为了存储元数据,我通过设置包含Revision
的我自己的模型来扩展OneToOneField(Revision)
模型。到目前为止,非常好。
但鉴于对Revision
的引用,如何在之前直接访问?例如,要生成此修订版与上一版本之间的更改列表,是否有更有效的方法,而不是回调reversion.get_for_object
并在列表中搜索我正在寻找的版本?
答案 0 :(得分:5)
Revision对象具有date_created
属性,因此您可以编写一个查询,以便在给定修订版date_created
之前为您的对象选择单个最新修订版本。我基本上复制了低级API的get_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
答案 1 :(得分:0)
版本对象有一个修订属性,它有两个方法,' get_next_by_date_created'和' get_previous_by_date_created',您可以用它来遍历版本历史。
version.revision.get_previous_by_date_created()