5

オブジェクトに加えられた変更の完全な履歴を保存する必要があります。django-simple-historyは非常に魅力的ですが、 django-tastypieでは機能しません。PUT (オブジェクトの更新) を使用して API にデータを送信すると、オブジェクトは正常に更新されますが、履歴レコードは更新されません。「./manage.py shell」を介してオブジェクトを手動で変更すると、すべて正常に動作します。Tastypie が信号か何かをバイパスしているようです。

これを期待どおりに機能させる方法はありますか?

4

1 に答える 1

0

あなたのコードを見ることなく、これを分析的に解決しようとします。

django-simple-history を見ると、プロジェクトは実際に post_save/post_delete シグナルで履歴オブジェクトを作成し、カスタム model.Manager サブクラスを使用してそれらへのアクセスを提供しているようです。

TastyPie が保存するリソースは ModelResource であり、実際の Model インスタンスではないようです。このプロキシ モデルは orm を認識し、それに対してすべてのクエリを実行します。

だから私が思うにsimple_history/models.pycontribute_to_classメソッドは宣言しmodels.signals.class_prepared.connect(self.finalize, sender=cls)ますが、TastyPie はモデルのインスタンスを初期化しないため、このシグナルは決して発火しません...

これは奇妙に思えて、なぜ TastyPie がそれを行うのか理解できません。それとも、何か誤解しているのでしょうか? github リポジトリで issue をオープンしてみませんか?

于 2013-02-17T21:10:13.463 に答える