あなたの時間に感謝します。Django - 保存メソッドをオーバーライドするときに古い値と新しい値との差異を確認してください
私はDjango 1.4を使用しています。次のコードがあります。Quest
モデルのオーバーライドされた保存メソッドです。
@commit_on_success
def save(self, *args, **kwargs):
from ib.quest.models.quest_status_update import QuestStatusUpdate
created = not self.pk
if not created:
quest = Quest.objects.get(pk=self)
# CHECK FOR SOME OLD VALUE
super(Quest, self).save(*args, **kwargs)
これを行うスマートな方法を見つけることができませんでした。古いインスタンス値を見つけるために私が現在更新しているオブジェクトに対して新しいクエリを作成しなければならないことは、私にとって非常に馬鹿げているようです。
これを行うより良い方法はありますか?
ありがとうございます。あなたが自分で行うか、別のクエリは前に保存を実行する必要がありますので、
サンフランシスコ
更新のコンテキストとは何ですか?すなわち、モデルやModelFormなどを介して直接ビューに表示されますか? – jondykeman
これは本当に関係がありますか?私はメソッドを保存してインスタンスを更新しています。しかし、とにかく、この呼び出しはビューから行われ、そこに 'quest.save()'が呼び出されました – Francisco
これを行うにはクリーンな方法があるとは思えません。古いオブジェクトを 'save()'メソッドに渡したり、それを実行しているときに 'save()'でそれを照会することができます。 – Rohan