Как заставить 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'