使用django-cache-machine覆盖Django中的Manager

时间:2013-05-22 17:28:14

标签: django django-cache-machine

由于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的模型。正确?

这是正确的方法吗?

0 个答案:

没有答案