Django-Reversion中的多个撤消

时间:2014-11-13 10:30:19

标签: python django django-reversion

我想撤消我在模型中完成的更改。我可以使用django-reversion将其撤消1级。如何,但我多次撤消我的更改。

例如: -

我有一个模特

with reversion.create_revision():
    server_obj = Server(url = 1)
    server_obj.save()

现在,我更新了两次。通过两次这个词,我的意思是我把这个函数调用两次或说n次。

with reversion.create_revision():
    url = bundle.data['url']
    server_obj.url = url

如何在n次中撤消。

目前,我这样做。

your_model = Server.objects.get(id = id)
version_list = reversion.get_unique_for_object(your_model)
version = version_list[1]
version.revision.revert()

我该怎么办?

1 个答案:

答案 0 :(得分:0)

version_list.order_by( ' - revision__date_created')[2] .revert()

然而,如果没有自己的修订版本,它将会恢复。

查询集中有一些名为last()的内容,它显示对象在上次更改之前所持有的版本。但是它不能用于您的用例,因为它不跟踪revert()。

我认为可能的唯一方法是制作一个跟踪撤消的外部模型。那是凌乱的,容易出现边缘情况。我觉得必须有一些更好的方法来做到这一点。