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')