2013-01-05 157 views
1

我有以下问题:如何多个Django查询集聚合和过滤器结合

class species(models.Model): 
    pass 

class question(models.Model): 
    species = models.ForeignKey(species) 

class answer(models.Model): 
    question = models.ForeignKey(question) 

现在我想检索包含任何问题物种的查询集没有任何答案

我的意思是我可以用得到的是有疑问的所有种类:

sp = species.objects.annotate(num_questions=Count('question')).filter(
    num_questions__gt=0) 

而且我可以用得到没有回答所有的问题:

qs = question.objects.annotate(num_answers=Count('answer')).filter(
    num_answers=0) 

但我怎么结合两件事情在一起?

在此先感谢!

回答

1

可以菊花链的注释,像这样:

sp = species.objects.annotate(num_questions=Count('question')).annotate(
      num_answers=Count('answer')).filter(num_questions__gt=0, num_answers=0) 
+0

感谢您的答案,但我想你是误会我的问题。我的问题不是将结果列表连接在一起,而是检索其意义在于两个条件的连接的条目。 – guinny

+0

@chaiy我已经修改了我的答案 –