django - 保存模型时未创建新修订

标签 django django-reversion

我使用 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

调用 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/

相关文章:

mysql - django-reversion: get_for_object() 抛出数据库错误 "' <db_name>.django_content_type' 不存在”

python - 使用 Django 还原更改名称后如何获取以前的对象值?

django - 撤消密集数据库中的级联删除

python - 获取 Django 模型的主要字段的名称

django - 为除工作人员之外的所有人缓存

python /MySQL : Escaping strings used as parameters in raw database queries

python - Django 唯一约束

Django 模型 : adding a new field with unique=True and migrate will fail due to entering a same value to existing records

python - 使用 django-reversion 获取所有修订