誰かがこれを行う簡単な方法を知っていればうれしいです。Djangoのグローバルセーブにcache.clear()を追加する
すべてのモデルに保存するたびにcache.clear()関数を実行できますか?
私はDjangoのドキュメントで、モデルごとに実装する方法を示していることを知っています。オーバーヘッドは問題ではありません。私は毎回キャッシュをクリアしたいと思います。
誰かがこれを行う簡単な方法を知っていればうれしいです。Djangoのグローバルセーブにcache.clear()を追加する
すべてのモデルに保存するたびにcache.clear()関数を実行できますか?
私はDjangoのドキュメントで、モデルごとに実装する方法を示していることを知っています。オーバーヘッドは問題ではありません。私は毎回キャッシュをクリアしたいと思います。
これを行うにはいくつかの方法があります。
まず、models.Modelから継承した共通の抽象基底クラスを作成し、save
をオーバーライドしてキャッシュをクリアし、すべてのモデルを継承させることができます。
もう一つの方法は、signalsを使用するかもしれない - あなたはそれがすべてのモデルのために発生します特定のモデルを指定しない場合は、事前と事後には、信号はオプションの引数としてsender
を持って保存します。
@ダニエル・ローズメン。申し訳ありませんが、私は評判がよくないので、私のコメントを削除することはできませんでした。
私に正しい方向を指してくれてありがとう。
それはのように簡単だった:django.core.cacheインポートキャッシュ @receiver(post_save) デフclear_the_cache(** kwargsからからpost_save をインポートするにdjango.db.models.signalsから
from django.db.models.signals import post_save
from django.core.cache import cache
@receiver(post_save)
def clear_the_cache(**kwargs):
cache.clear()
こんにちはAndy、私はこれをジャンゴオスカーのサイトに適用することを考えています。私はそれがあなたのためにどのようにうまくいったのだろうか?あなたが考えることができる否定的な示唆があるかどうか? – Lightbulb1
' ): cache.clear() ' – Andy1212