DjangoのForeinKeyとかキャッシュとか改
毎回キャッシュアクセスはしたくない
前回、DjangoのForeinKeyとかキャッシュとか - ま、そんな日もあるさを書いたんですけど
name = player.cached_community.name id = player.cached_community.id
みたいに使うと複数回キャッシュを見に行ってしまうので
community = player.cached_community name = community.name id = community.id
みたいに変数にコピーして使っていました。
でも、毎回これは面倒!
改良してみた
class Community(AbustractCachedModel): name = models.CharField(max_length=50) class Player(AbustractCachedModel): name = models.CharField(max_length=50) community = models.ForeinKey(Community) community_cache = None @property def cached_community(self): if self.community_cache is None: self.community_cache = Community.get(self.community_id) return self.community_cache
これで、何も考えずに
name = player.cached_community.name id = player.cached_community.id
みたいに使えばOK。
気をつけること
communityを更新しても自動ではcached_communityは更新されないので、そこんとこだけ注意。