我使用Reversion来控制模型对象的更改。在documentation我发现了这个:
每当你在修订范围内的模型上调用save()时,它就会 将添加到该修订
这是我使用模型的保存方法的代码:
c.save(update_fields=['status'])
执行此代码时,对象的修订列表中没有新记录,至少我没有在管理员中看到它。
答案 0 :(得分:3)
我遇到类似的问题,在管理界面中进行的编辑有逆转,但shell中的编辑没有。
@yilmazhuseyin是正确的,你需要上下文包装器,但我发现我有一个额外的错误,我的模型没有注册。
在admin.py
:
class YourModelAdmin(reversion.VersionAdmin):
pass
admin.site.register(YourModel, YourModelAdmin)
将注册您的模型,但仅在调用管理代码时才会注册。当我通过python manage.py 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