我使用Django Cache Machine来缓存我的Django ORM对象。它是一款很棒的软件。它极大地减少了几乎所有模型的数据库访问 - 并且使用起来很简单。
但是,仍然没有缓存一个模型:django.contrib.auth.models.User
。因为这不是我自己的应用程序代码,所以我没有使用Cache Machine指令告诉您添加到每个模型的CachingMixin
。所以现在即使我自己的所有应用程序'正在缓存模型,User
模型不是。因此,仍有许多不必要的数据库访问。
消除这些数据库访问的最佳方法是什么? django.contrib.auth.models.User
不是我在Git中的代码库的一部分。我宁愿根本不改变该类或模块的源代码。
答案 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'