我需要存储对对象所做更改的完整历史。我发现django-simple-history非常吸引人,但它不适用于django-tastypie。如果我使用PUT (更新对象)将数据发送到API,对象可以更新,但历史记录不会更新。如果我通过'./manage.py shell‘手动更改对象,一切都会正常工作。看起来像是tastypie绕过了信号之类的。
你知道我怎么才能让它按预期工作吗?
发布于 2013-02-18 05:10:13
在看不到你的代码的情况下,我将尝试解析地解决这个问题。
看一下django-simple-history,似乎该项目确实在post_save/post_delete信号上创建了历史对象,并使用一个自定义的model.Manager子类提供对它们的访问。
在我看来,TastyPie保存的资源是一个ModelResource,而不是您的实际模型实例。这个代理模型知道orm,并在其上执行所有查询。
所以我认为在simple_history/models.py中发生的事情是contribute_to_class方法声明了models.signals.class_prepared.connect(self.finalize, sender=cls),但是这个信号从来不会触发,因为TastyPie不会初始化模型的实例……
这看起来很奇怪,我不明白为什么TastyPie会这么做,或者我可能误解了什么?为什么你不尝试在github库中打开一个问题呢?
https://stackoverflow.com/questions/14584329
复制相似问题