我使用 Reversion控制模型对象的变化。在 documentation我发现了这个:
Whenever you call save() on a model within the scope of a revision, it will be added to that revision
这是我使用模型的保存方法的代码:
c.save(update_fields=['status'])
执行此代码时,对象的修订列表中没有新记录,至少我没有在管理中看到它。
最佳答案
我有一个类似的问题,在管理界面中所做的编辑有回滚,但在 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()
更新:
Revision 针对这种情况提供了一些提示。 ( http://django-reversion.readthedocs.org/en/latest/api.html#api ) 一种是简单地导入您的管理模块,以便调用修订。
关于django - 保存模型时未创建新修订,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19181092/