2016-10-21 5 views
1

誰かがこれを行う簡単な方法を知っていればうれしいです。Djangoのグローバルセーブにcache.clear()を追加する

すべてのモデルに保存するたびにcache.clear()関数を実行できますか?

私はDjangoのドキュメントで、モデルごとに実装する方法を示していることを知っています。オーバーヘッドは問題ではありません。私は毎回キャッシュをクリアしたいと思います。

答えて

1

これを行うにはいくつかの方法があります。

まず、models.Modelから継承した共通の抽象基底クラスを作成し、saveをオーバーライドしてキャッシュをクリアし、すべてのモデルを継承させることができます。

もう一つの方法は、signalsを使用するかもしれない - あなたはそれがすべてのモデルのために発生します特定のモデルを指定しない場合は、事前と事後には、信号はオプションの引数としてsenderを持って保存します。

+0

' ): cache.clear() ' – Andy1212

0

@ダニエル・ローズメン。申し訳ありませんが、私は評判がよくないので、私のコメントを削除することはできませんでした。

私に正しい方向を指してくれてありがとう。

それはのように簡単だった: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() 
+0

こんにちはAndy、私はこれをジャンゴオスカーのサイトに適用することを考えています。私はそれがあなたのためにどのようにうまくいったのだろうか?あなたが考えることができる否定的な示唆があるかどうか? – Lightbulb1

関連する問題