我在模型管理器中有一个QuerySetMixin
:
models.py:
class MyModel(models.Model):
objects = SoftDeletableManager()
managers.py:
class SoftDeletableManager(SoftDeletableManagerMixin, models.Manager):
pass
class SoftDeletableQuerySet(QuerySet):
pass
class SoftDeletableManagerMixin:
_queryset_class = SoftDeletableQuerySet
def get_queryset(self):
return self._queryset_class(
model=self.model,
using=self._db,
**kwargs).filter(is_removed=False)
我想定义第二个QuerySetMixin
,用于显示SoftDeletableManagerMixin
的结果并对其进行过滤。我该怎么做?
例如
class MyManagerMixin:
def get_queryset(self):
return self.[inherit other querysets].filter(mynewfilter=True)
如果继承它,则可能需要使用super()
代理对象:
class SoftDeletableManagerMixin:
_queryset_class = SoftDeletableQuerySet
def get_queryset(self):
returnsuper().get_queryset().filter(is_removed=False)
你的第二个混音也是如此:
class MyManagerMixin:
def get_queryset(self):
returnsuper().get_queryset().filter(mynewfilter=True)
然后,您可以使用以下内容创建经理:
class MyNewManager(MyManagerMixin, SoftDeletableManagerMixin, Manager):
pass