如何查找具有最高属性数的对象

时间:2012-11-27 18:18:28

标签: django django-queryset

例如,假设我有一个名为“ClassRoom”的模型和一个名为“Student”的模型,Student与ClassRoom具有外键关系。

Class Student(models.Model):
    classroom = models.ForeignKey(ClassRoom, related_name='student')

如何使用基本的Django查询查找哪个课堂中的学生人数最多。我做了什么来找到答案似乎应该更容易。

max = 0    
for c in ClassRoom.objects.all():
        if c.student.count() > max:
            print 'ID: %s' % c.id
            max = c.student.count()

然后我会打印最后一个ID并对课堂ID进行.get()查询。无论如何使用注释或聚合来执行此操作?

1 个答案:

答案 0 :(得分:0)

尝试向ClassRoom对象添加类似内容:

def num_students(self):
    return Students.objects.filter(classroom=self).count()

显然用您所谓的任何内容替换classroom。然后,您应该能够使用__max查询。

免责声明:我没有尝试过这个,但它在我脑海中起作用:)