Python 在Django中通过反向存在检查筛选queryset

Python 在Django中通过反向存在检查筛选queryset,python,django,Python,Django,我有模型: class Post(models.Model): content=models.CharField() user=models.ForeignKey('users.user') active=models.BooleanField(默认值=True) 类注释(models.Model): post=models.ForeignKey(post,相关的\u name='post\u comments') 以及由查询参数过滤的查询集: user=request.QUERY\u PAR

我有模型:

class Post(models.Model):
content=models.CharField()
user=models.ForeignKey('users.user')
active=models.BooleanField(默认值=True)
类注释(models.Model):
post=models.ForeignKey(post,相关的\u name='post\u comments')
以及由查询参数过滤的查询集:

user=request.QUERY\u PARAMS.get('user\u id',None)
active=request.QUERY_PARAMS.get('active',None)
has_comments=request.QUERY_PARAMS.get('has_comments',None)
qs=Post.objects.all()
如果用户:
qs=qs.filter(用户=用户)
如果激活:
qs=qs.过滤器(活动=活动)
如有任何意见:
???
我不知道如何在维护所有以前的筛选器的同时筛选此查询。可能吗?

根据:

要引用“反向”关系,只需使用模型的小写名称

下面是您的代码:

if user:
    qs = qs.filter(user=user)
if active:
    qs = qs.filter(active=active)
if has_comments:
    qs = qs.filter(comment__isnull=False)
关于性能,应考虑:

Django不支持对反向外部对象使用select_related()方法 键查找,因此不离开Python所能做的最好的事情是 数据库查询


您还应该看看哪个可以,不同于反向
ForeignKeys
的查找,尽管查询集的每个元素都有一个单独的查询。

谢谢
qs.filter(post\u comments\uu isnull=False)
已起作用。在文档中多做一点解释就好了。请注意,我的博客文章已经过时了,在我写这篇文章时没有添加与预回迁相关的内容,而且它基本上就是我在那里说的。