保存模型时不会创建新修订版

时间:2013-10-04 12:24:15

标签: django django-reversion

我使用Reversion来控制模型对象的更改。在documentation我发现了这个:

  

每当你在修订范围内的模型上调用save()时,它就会   将添加到该修订

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

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

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

2 个答案:

答案 0 :(得分:3)

我遇到类似的问题,在管理界面中进行的编辑有逆转,但shell中的编辑没有。

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

admin.py

class YourModelAdmin(reversion.VersionAdmin):
    pass

admin.site.register(YourModel, YourModelAdmin)

将注册您的模型,但仅在调用管理代码时才会注册。当我通过python manage.py shell

调用shell时,它没有被调用

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

import reversion
reversion.register(YourModel)

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

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

<强>更新

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

答案 1 :(得分:0)

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

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

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