假设我有这个模型:
class Student(models.Model):
class_name = models.CharField()
mark = models.IntegerField()
我想让所有mark
班里成绩最高的学生。我可以得到mark
所有班级中最高的学生,就像这篇文章中提到的那样。但我希望所有mark
班上成绩最高的学生,像这样:
Student.objects.annotate(
highest_mark_in_class=Max(
Students.objects.filter(class_name=F('class_name'))
.filter(mark=highest_mark_in_class)
)
)
我可以用一个for
循环来做到这一点,但是对于一个大型数据库for
循环来说是相当慢的。不知道这样的查询能不能写成一行?