Как заставить Django Cache Machine работать на django.contrib.auth.models.User?

Я использую Django Cache Machine для кэширования своих объектов Django ORM. Это отличный кусок программного обеспечения. Это значительно сократило доступ к базе данных почти для всех моих моделей - и это просто в использовании.

Тем не менее, одна модель все еще не кэшируется: django.contrib.auth.models.User, Поскольку это не мой собственный код приложения, я не снабдил его CachingMixin что инструкции кеш-машины говорят вам добавить к каждой из ваших моделей. Так что теперь, несмотря на то, что все мои собственные приложения кэшируются, User модели нет. И поэтому все еще существует множество ненужных обращений к базе данных.

Каков наилучший способ устранить эти обращения к базе данных? django.contrib.auth.models.User не является частью моей кодовой базы в Git. Я бы предпочел вообще не изменять исходный код этого класса или модуля.

1 ответ

Решение

Вам необходимо создать пользовательскую модель пользователя, которая сохранит функциональность модели 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'
Другие вопросы по тегам