Менеджер перезаписи в Django с использованием django-cache-machine
Поскольку https://github.com/jbalogh/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. Правильно?
Это правильный способ сделать это?