gpt4 book ai didi

django - 如何通过混合继承多个查询集过滤器

转载 作者:行者123 更新时间:2023-12-04 04:19:44 25 4
gpt4 key购买 nike

我在模型管理器中有一个 QuerySetMixin:

模型.py:

class MyModel(models.Model):
objects = SoftDeletableManager()

经理.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() proxy object :

class SoftDeletableManagerMixin:
_queryset_class = SoftDeletableQuerySet

def get_queryset(self):
return <b>super().get_queryset()</b>.filter(is_removed=False)

第二个 mixin 也是如此:

class MyManagerMixin:

def get_queryset(self):
return <b>super().get_queryset()</b>.filter(mynewfilter=True)

然后您可以创建一个经理:

class MyNewManager(<b>MyManagerMixin, SoftDeletableManagerMixin</b>, Manager):
pass

关于django - 如何通过混合继承多个查询集过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59644314/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com