cul*_*rón 9 django django-models django-reversion
我做了初始安装步骤并创建了初始修订版,但是当我在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">]
Run Code Online (Sandbox Code Playgroud)
这是初始修订版.
从视图更新模型时,会成功创建修订.
我错过了什么?
models.py文件是:
...
class Shop(Model):
...
import reversion
reversion.register(Shop)
<EOF>
Run Code Online (Sandbox Code Playgroud)
我在post_save接收器中看到了一种反转方法,虽然在我调试它时没有调用它.
我有Django v1.4.1,reversion v1.6.2.
Dav*_*ave 25
我写了django-reversion,所以我想我可以对这个问题有所了解.
保存模型时会自动保存模型版本,提供以下条件:
第1点可以通过在models.py文件中注册模型VersionAdmin或显式调用来实现reversion.register().
点2可以通过使用RevisionMiddleware或reversion.create_revision()装饰器或上下文管理器来实现.任何管理员视图VersionAdmin也保存修订.
因此,如果您的shell没有创建版本,则不会满足第1点或第2点.以下是修复方法:
reversion.register()models.py文件.reversion.create_revision()您的调用周围的上下文管理器进行保存.with reversion.create_revision():
s.save()
Run Code Online (Sandbox Code Playgroud)
有关Low Level API wiki页面上此类内容的更多信息:
http://django-reversion.readthedocs.org/en/latest/api.html
| 归档时间: |
|
| 查看次数: |
2366 次 |
| 最近记录: |