在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@chingchungQuestions.objects.annotation(count=count('answers')).filter(count_uugt=3)
如何编写上述查询以获取答案计数大于3的QuestionObject我知道如何使用sql查询,但我对django不熟悉,对it@ChingChong@chingchungQuestions.objects.annotation(count=count('answers')).filter(count\uu gt=3)