0

例如,假设我有一个名为“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() 查询。反正有没有用注释或聚合来做到这一点?

4

1 回答 1

0

尝试将这样的内容添加到您的ClassRoom对象中:

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

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

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

于 2012-11-27T18:25:13.383 回答