2

我使用Reversion来控制模型对象的变化。在文档中我发现了这个:

每当您在修订范围内对模型调用 save() 时,它将被添加到该修订中

这是我使用模型保存方法的代码:

c.save(update_fields=['status'])

执行此代码时,对象的修订列表中没有新记录,至少我在管理员中看不到它。

4

2 回答 2

3

我有一个类似的问题,在管理界面中进行的编辑有恢复,但 shell 中的编辑没有。

@yilmazhuseyin 是正确的,您需要上下文包装器,但我发现我有一个额外的错误,即我的模型没有注册。

admin.py

class YourModelAdmin(reversion.VersionAdmin):
    pass

admin.site.register(YourModel, YourModelAdmin)

将注册您的模型,但前提是调用管理代码。当我通过调用 shell 时它没有被调用python manage.py shell

所以,为了解决这个问题,我添加了models.py

import reversion
reversion.register(YourModel)

然后当我保存一个对象时,我仍然需要使用上下文包装器

 with reversion.create_revision():
     obj.save()

更新:

Revision 有一些针对这种情况的提示。( http://django-reversion.readthedocs.org/en/latest/api.html#api ) 一种是简单地导入您的管理模块,以便调用修订。

于 2014-01-10T22:24:00.267 回答
0

我认为您需要在修订事务中保存模型。

注意:如果您在修订范围之外调用 save(),则不会创建修订。这意味着您可以控制何时创建修订。

来源:http ://django-reversion.readthedocs.org/en/latest/api.html#creating-revisions

于 2013-11-14T13:55:37.670 回答