如何组合多个django queryset聚合和过滤器

时间:2013-01-05 17:24:49

标签: python database django aggregate

我有以下问题:

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 个答案:

答案 0 :(得分:1)

您可以像这样菊花链式注释:

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