我执行了initial installation步骤并创建了初始版本,但是当我在django shell中保存模型时,没有创建新的版本:
In [1]: s = Shop.objects.all()[0]
In [2]: import reversion
In [3]: s.name = 'a'
In [4]: s.save()
In [5]: s.name = 'b'
In [6]: s.save()
In [7]: reversion.get_for_object(s)
Out[7]: [<Version: <1> "X">]这是初始版本。
当我从视图更新模型时,成功创建了修订。
我遗漏了什么?
models.py文件为:
...
class Shop(Model):
...
import reversion
reversion.register(Shop)
<EOF>我在post_save接收器中看到了一个返回方法,尽管我在调试它时并没有调用它。
我有Django v1.4.1,reversion v1.6.2。
发布于 2012-12-07 17:30:11
我写了django-reversion,所以我想我可以在这个问题上提供一些启发。
如果满足以下条件,则会在保存模型时自动保存模型的版本:
使用django-reversion.
第1点可以通过向VersionAdmin注册模型或在models.py文件中显式调用reversion.register()来实现。
第2点可以通过使用RevisionMiddleware、reversion.create_revision()装饰器或上下文管理器来实现。VersionAdmin中的任何管理员视图也会保存修订。
因此,如果您的shell没有创建版本,则不会满足第1点或第2点。下面是如何修复它:
reversion.register()。在shell代码中使用reversion.create_revision()上下文管理器保存with reversion.create_revision():
s.save()在低级API维基页面上有更多关于这类事情的信息:
http://django-reversion.readthedocs.org/en/latest/api.html
https://stackoverflow.com/questions/12243011
复制相似问题