如何使用Tastypie获得django-simple-history的工作?

时间:2013-01-29 13:40:43

标签: django tastypie

我需要存储对象所做更改的完整历史记录。我发现django-simple-history非常有吸引力,但它不适用于django-tastypie。如果我使用PUT将数据发送到API(更新对象),则对象会更新,但不会更新历史记录。如果我通过'./manage.py shell'手动更改对象,一切正常。它似乎是tastypie绕过信号或其他东西。

我有什么想法可以让它按预期工作?

1 个答案:

答案 0 :(得分:0)

如果没有看到您的代码,我将尝试以分析方式解决这个问题。

看看django-simple-history,似乎项目确实在post_save / post_delete信号上创建历史对象,并使用自定义model.Manager子类提供对它们的访问。

在我看来,TastyPie保存的资源是ModelResource,而不是您的实际Model实例。该代理模型知道orm并对其执行所有查询。

所以我认为在simple_history/models.py中发生的是contribute_to_class方法声明models.signals.class_prepared.connect(self.finalize, sender=cls)但是这个信号永远不会触发,因为TastyPie没有初始化模型的实例......

这看起来很奇怪,我无法理解为什么TastyPie这样做,或者我可能误解了什么?你为什么不尝试在github repo中打开一个问题?