Django查询集选择平均和最佳结果

时间:2011-04-18 21:33:44

标签: django

我有一个这样的模型:

class Quiz(models.Model):
    user = models.ForeignKey(User, unique=True)
    school_class = models.CharField(max_length=3, choices=klasa_choices)
    points = models.DecimalField(max_digits=5, decimal_places=2,default=0)
    date = models.DateTimeField(null=True,blank=True)
    active = models.BooleanField(default=False)

基本上我想得到每个school_class的相应用户的平均分数(分数)和最佳结果。这可以轻松完成吗? (即没有额外的计算?)

到目前为止,我来到了:

Quiz.objects.values('school_class').annotate(avg=Avg('points'),max=Max('points')).order_by('-avg')

但我如何才能让用户获得最高分?

1 个答案:

答案 0 :(得分:0)

您需要第二个查询。您可以使用第一个的结果来保存订购表格:

quizzes = Quiz.objects.values('school_class').annotate(avg=Avg('points'),max=Max('points')).order_by('-avg')

Quiz.objects.values('user','school_class').filter(points=quizzes.max)

如果您只需要一个,请添加.latest('date'),。。赐予(' - date')或[0]以获得一个。