0

我想撤消在模型中所做的更改。我可以使用 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()

我要怎么做???

4

1 回答 1

0

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

然而,这将在不留下自己的修订版的情况下恢复。

查询集中有一个叫做 last() 的东西,它显示了对象在上次更改之前持有的版本。但是它不适用于您的用例,因为它不跟踪 revert()。

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

于 2014-11-13T11:45:16.457 回答