由于django-cache-machine覆盖了对象模型属性,修改查询集的正确方法如下:
class ModelAQuerySet(models.query.QuerySet):
def foo(self):
return self.filter(name='foo')
class ModelAManager(base.CachingManager):
def __init__(self):
super(ModelAManager, self).__init__()
def get_query_set(self):
return ModelAQuerySet(self.model, using=self._db)
def foo(self):
return self.get_query_set().foo()
class ModelA(base.CachingMixin, models.Model):
#fields ...
objects = ModelAManager()
我们可以在某些模型中执行objects = base.CachingManager
。这意味着,CachingManager
已经从models.Manager
本身继承。所以我们只创建一个继承base.CachingManager的模型。正确?
这是正确的方法吗?