以前版本的django-reversion控制对象

Eta*_*oin 1 python django django-reversion

我正在使用django-reversion文档调用低级API,以便在我自己的代码中访问reversion历史记录,除了admin.为了存储元数据,我Revision通过设置我自己的模型来扩展模型,包括a OneToOneField(Revision).到现在为止还挺好.

但考虑到参照Revision,我怎么能直接访问修订之前呢?例如,要生成此修订版与上一版本之间的更改列表,是否有更有效的方法,而不是回调reversion.get_for_object和搜索列表中我正在寻找的版本?

eju*_*ovy 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
Run Code Online (Sandbox Code Playgroud)