Django 1.6如何将列表更改为queryset或如何编写此类查询?

Django 1.6如何将列表更改为queryset或如何编写此类查询?,django,Django,我想得到所有没有答案的问题。我用这个: all_questions=[q for q in Question.objects.all() if not q.answer_set.all()] 它起作用了。但是我需要调用带有所有问题的order\u by方法,所以我需要将其更改为queryset,如何 或者,是否有像Question.objects.filter(answer\u count=0)这样的标准方法?我觉得很难,但没有结果 解决方案:将答案\u计数\u gt=0更改为答案\u计数=0

我想得到所有没有答案的问题。我用这个:

all_questions=[q for q in Question.objects.all() if not q.answer_set.all()]
它起作用了。但是我需要调用带有所有问题的
order\u by
方法,所以我需要将其更改为queryset,如何

或者,是否有像
Question.objects.filter(answer\u count=0)
这样的标准方法?我觉得很难,但没有结果

解决方案:将答案\u计数\u gt=0更改为答案\u计数=0。

   all_questions=Question.objects.annotate(answer_count=Count('answer')).filter(answer_count=0)

您应该能够比对每个问题进行一次查询更有效地使用注释

Question.objects.annotate(answer_count=Count('answer')).filter(answer_count=0)

也就是说,您可以直接将order_添加到Questions.objects.all()查询中。但正如我所说,每个问题进行一次查询的效率要低得多。

您应该能够比每个问题进行一次查询更有效地使用注释

Question.objects.annotate(answer_count=Count('answer')).filter(answer_count=0)

也就是说,您可以直接将order_添加到Questions.objects.all()查询中。但正如我所说,每个问题进行一次查询的效率要低得多。

您应该能够比每个问题进行一次查询更有效地使用注释

Question.objects.annotate(answer_count=Count('answer')).filter(answer_count=0)

也就是说,您可以直接将order_添加到Questions.objects.all()查询中。但正如我所说,每个问题进行一次查询的效率要低得多。

您应该能够比每个问题进行一次查询更有效地使用注释

Question.objects.annotate(answer_count=Count('answer')).filter(answer_count=0)

也就是说,您可以直接将order_添加到Questions.objects.all()查询中。但正如我所说,每个问题进行查询的效率要低得多。

只是好奇,是否可以将列表更改为查询集?哦,我只是使用你的方法,但没有效果,它返回所有问题,包括有答案的问题。我误解了你的意图。是的,那是正确的,你像往常一样按那个属性过滤。不,你不能将列表更改为查询集,除非你运行另一个查询,如
Question.objects.filter(id\u in=[getattr(x,id)for x in my\u list\u of \u objects])
只是好奇,是否可以将列表更改为查询集?哦,我只是使用你的方法,但没有效果,它返回所有问题,包括有答案的问题,我误解了你的意图。是的,那是正确的,你像往常一样按那个属性过滤。不,你不能将列表更改为查询集,除非你运行另一个查询,如
Question.objects.filter(id\u in=[getattr(x,id)for x in my\u list\u of \u objects])
只是好奇,是否可以将列表更改为查询集?哦,我只是使用你的方法,但没有效果,它返回所有问题,包括有答案的问题,我误解了你的意图。是的,那是正确的,你像往常一样按那个属性过滤。不,你不能将列表更改为查询集,除非你运行另一个查询,如
Question.objects.filter(id\u in=[getattr(x,id)for x in my\u list\u of \u objects])
只是好奇,是否可以将列表更改为查询集?哦,我只是使用你的方法,但没有效果,它返回所有问题,包括有答案的问题,我误解了你的意图。是的,那是正确的,你像往常一样按那个属性过滤。不,您不能将列表更改为查询集,除非运行另一个查询,如
Question.objects.filter(id\u in=[getattr(x,id)for x in my\u list\u of\u objects])
Question.objects.annotate(answer_count=Count('answer')).filter(answer_count=0)