2015-03-24 52 views
1

我有這樣一個模型:如何使用Django檢索模型字段的值分佈?

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的查詢方法完成同樣的工作?

回答

3

試試這個

from django.db.models import Count 
Answer.objects.all().values('question', 'points_achieved').annotate(total=Count('points_achieved')).order_by('total') 

來源:Django Aggregation

+0

謝謝你,只是剛剛發現(幾乎)相同的解決方案:-) – Daniel 2015-03-24 22:48:04

0

再過了些野生的猜測和跟隨this教程中,我設法想出了這個解決方案:

Answer.objects.values('question','points_achieved') 
    .annotate(Count('points_achieved'))