我有一个这样的模型:
class Question(models.Model):
#something
class Answer(models.Model):
question = models.ForeignKey(Question)
points_achieved = models.PositiveSmallIntegerField()
现在我想查询points_achieved的分布:对于每个问题,我想知道有多少得分0分,1分等。 在python中我会这样做:
dists = []
for q in Question.objects.all():
dist = defaultdict(int)
for answer in q.answer_set.all():
dist[answer.points_achieved]+=1
dists.append(dist)
如何使用Django的查询方法完成相同的操作?
答案 0 :(得分:3)
试试这个
from django.db.models import Count
Answer.objects.all().values('question', 'points_achieved').annotate(total=Count('points_achieved')).order_by('total')
答案 1 :(得分:0)
经过一些更疯狂的猜测和以下this教程后,我设法提出了这个解决方案:
Answer.objects.values('question','points_achieved')
.annotate(Count('points_achieved'))