Python 如何让Django缓存计算机在Django.contrib.auth.models.User上工作?
我正在使用缓存我的Django ORM对象。这是一个很棒的软件。它极大地减少了几乎所有模型的数据库访问量——而且使用起来很简单 但是,仍然没有缓存一个模型:Python 如何让Django缓存计算机在Django.contrib.auth.models.User上工作?,python,django,django-models,django-contrib,django-cache-machine,Python,Django,Django Models,Django Contrib,Django Cache Machine,我正在使用缓存我的Django ORM对象。这是一个很棒的软件。它极大地减少了几乎所有模型的数据库访问量——而且使用起来很简单 但是,仍然没有缓存一个模型:django.contrib.auth.models.User。因为这不是我自己的应用程序代码,所以我没有为它配备缓存机器指令告诉您添加到每个型号的CachingMixin。所以现在,即使我自己的所有应用程序模型都被缓存,但User模型却没有。因此,仍然有许多不必要的数据库访问 消除这些数据库访问的最佳方法是什么django.contrib.
django.contrib.auth.models.User
。因为这不是我自己的应用程序代码,所以我没有为它配备缓存机器指令告诉您添加到每个型号的CachingMixin
。所以现在,即使我自己的所有应用程序模型都被缓存,但User
模型却没有。因此,仍然有许多不必要的数据库访问
消除这些数据库访问的最佳方法是什么django.contrib.auth.models.User
不是我的Git代码库的一部分。我更希望根本不改变该类或模块的源代码。您需要在添加缓存mixin时保留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'
谢谢你,一个外星人。这看起来是一个很好的解决方案。