Django 在筛选器中使用自定义反向管理器

Django 在筛选器中使用自定义反向管理器,django,django-models,django-queryset,django-orm,django-managers,Django,Django Models,Django Queryset,Django Orm,Django Managers,鉴于我有: class Publisher(Model): pass class Author(Model): name = models.CharField(...) publisher = models.ForeignKey(Publisher) is_alive = models.BooleanField(...) objects = models.Manager() # Default Manager alives = AliveManager() #

鉴于我有:

class Publisher(Model):
  pass

class Author(Model):
  name = models.CharField(...)
  publisher = models.ForeignKey(Publisher)
  is_alive = models.BooleanField(...)
  objects = models.Manager()  # Default Manager
  alives = AliveManager()    # Custom Manager
现在,我可以使用以下方法进行筛选:

Publisher.objects.filter(author__name='xxx', author__is_alive=True)
我的问题是,在filter语句中是否有利用a的方法

publisher.author_set(manager="alives")

给我一个给定出版商的信息。

我想这是文档中的相关部分:

[…]默认筛选在其get_queryset()方法中,该筛选将应用于all()调用


我不明白你在问什么。管理器是管理器,而不是筛选条件。您希望如何在筛选器中使用管理器?鉴于我已编写了一个筛选所需作者的管理器,在Publisher queryset上编写筛选器时,是否有方法使用该管理器?我希望找到所有发布者都有活动作者,并且作者的姓名为XXX。我希望最终得到一个发布者查询集。如果希望获得具有活动作者的发布者,请为发布者模型添加一个管理器。据我所知,您不能使用其他模型管理器。
class AliveManager(Manager):
    def get_queryset(self):
        qs = super(AliveManager, self).get_queryset()
        return qs.filter(is_alive=True)

class Author(Model):
    name = models.CharField(...)
    publisher = models.ForeignKey(Publisher)
    is_alive = models.BooleanField(...)
    objects = models.Manager()  # Default Manager
    alives = AliveManager()    # Custom Manager


# returns all alive authors
publisher.author_set(manager='alives').all()
# filters through alive authors
publisher.author_set(manager='alives').filter(author__name='xxx')