如何让 Django 缓存机器在 django.contrib.auth.models.User 上工作?

How to get Django Cache Machine to work on django.contrib.auth.models.User?

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

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

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

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

我想这就足够了:

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'