5

我需要存储对对象所做更改的完整历史记录。我发现django-simple-history非常吸引人,但它不适用于django-tastypie。如果我使用 PUT(更新对象)将数据发送到 API,则对象更新正常,但历史记录未更新。如果我通过“./manage.py shell”手动更改对象,一切正常。看起来美味派正在绕过信号或其他东西。

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

4

1 回答 1

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 存储库中打开一个问题?

于 2013-02-17T21:10:13.463 回答