1

有一个更好的方法吗

questionobjects = Questions.objects.all()
for questionobject in questionobjects:
        answerobjects = Answers.objects.filter(question=questionobject.id).count()

在上面的查询Answers模型中,有外键关系Questions。但在上面的脚本中,查询答案查询是根据问题对象的数量执行的。

假设有 10 个问题对象,然后发生 10 个单独的答案对象查询。有没有办法用单个查询来做到这一点,因为随着 questionobjects 数量的增加,这将是一个问题,因为 answerobjects 查询的数量也会增加

4

2 回答 2

6

所以看起来你只关心答案的数量,而不是获取实际的答案对象。您可以使用注释来做到这一点:

from django.db.models import Count
Question.objects.all().annotate(Count('answers'))
于 2012-06-07T11:10:03.113 回答
4

看一下注解:Django Annotation

from django.db.models import Count
questions = Questions.objects.annotate(count=Count('answers'))

然后你可以访问计数[q.count for q in questions]

于 2012-06-07T11:10:57.220 回答