在django中查询的更好方法

在django中查询的更好方法,django,django-models,django-views,django-queryset,Django,Django Models,Django Views,Django Queryset,有没有更好的办法 questionobjects = Questions.objects.all() for questionobject in questionobjects: answerobjects = Answers.objects.filter(question=questionobject.id).count() 在上面的查询中,答案模型与问题有外键关系。但是在上面的脚本中,查询-应答查询是基于QuestionObject的数量执行的 假设有10个Question

有没有更好的办法

questionobjects = Questions.objects.all()
for questionobject in questionobjects:
        answerobjects = Answers.objects.filter(question=questionobject.id).count()
在上面的查询中,
答案
模型与
问题
有外键关系。但是在上面的脚本中,查询-应答查询是基于QuestionObject的数量执行的


假设有10个QuestionObject,则会发生10个单独的answerobject查询。有没有一种方法可以在单个查询中实现这一点,因为随着QuestionObject数量的增加,这将是一个问题,因为answerobjects查询的数量也会增加,所以看起来您只关心答案的数量,而不是实际的答案对象。您可以通过注释执行此操作:

from django.db.models import Count
Question.objects.all().annotate(Count('answers'))

所以看起来你只关心答案的数量,而不是得到实际的答案对象。您可以通过注释执行此操作:

from django.db.models import Count
Question.objects.all().annotate(Count('answers'))

请看注释:


然后您可以使用
[q.count for q in questions]
访问计数查看注释:


然后您可以使用
[q.count for q in questions]

访问计数。如何编写上述查询以获取答案计数大于3的QuestionObject我知道如何使用sql查询,但我是django的新手,对it@ChingChong@chingchung
Questions.objects.annotation(count=count('answers')).filter(count_uugt=3)
如何编写上述查询以获取答案计数大于3的QuestionObject我知道如何使用sql查询,但我对django不熟悉,对it@ChingChong@chingchung
Questions.objects.annotation(count=count('answers')).filter(count\uu gt=3)