【问题标题】:How to get Django Cache Machine to work on django.contrib.auth.models.User?如何让 Django Cache Machine 在 django.contrib.auth.models.User 上工作?
【发布时间】:2015-03-26 11:39:44
【问题描述】:

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

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

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

【问题讨论】:

    标签: python django django-models django-contrib django-cache-machine


    【解决方案1】:

    您需要创建一个custom user model,它在添加缓存 mixin 的同时保留 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'
    

    【讨论】:

    • 谢谢 Anentropic。这看起来是一个很好的解决方案。
    猜你喜欢
    • 2013-03-20
    • 2019-02-09
    • 2014-06-25
    • 2018-07-30
    • 2014-06-02
    • 1970-01-01
    • 2013-12-04
    • 2020-06-17
    • 2017-07-04
    相关资源
    最近更新 更多