如何让Django Cache Machine在django.contrib.auth.models.User上工作?

时间:2015-01-27 18:34:08

标签: python django django-models django-contrib django-cache-machine

我使用Django Cache Machine来缓存我的Django ORM对象。它是一款很棒的软件。它极大地减少了几乎所有模型的数据库访问 - 并且使用起来很简单。

但是,仍然没有缓存一个模型:django.contrib.auth.models.User。因为这不是我自己的应用程序代码,所以我没有使用Cache Machine指令告诉您添加到每个模型的CachingMixin。所以现在即使我自己的所有应用程序'正在缓存模型,User模型不是。因此,仍有许多不必要的数据库访问。

消除这些数据库访问的最佳方法是什么? django.contrib.auth.models.User不是我在Git中的代码库的一部分。我宁愿根本不改变该类或模块的源代码。

1 个答案:

答案 0 :(得分:3)

您需要制作一个custom user model,在添加缓存混合时保留Dajgno用户模型的功能。

我猜这就够了:

from caching.base import CachingManager, CachingMixin
from django.contrib.auth.models import AbstractUser, UserManager

class CachedUserManager(CachingManager, UserManager):
    pass

class CachedUser(CachingMixin, AbstractUser):
    objects = CachedUserManager()

当然,在你的settings.py中:

AUTH_USER_MODEL = 'myapp.CachedUser'