2010-06-26 42 views
0

我的代码:如何通过聚合与条件上的关系的领域责令

class School(models.Model): pass 

class Student(models.Model): 
    school = models.ForeignKey(School) 
    TYPE_CHOICES = (
     ('ug', 'Undergraduate'), 
     ('gr', 'Graduate'), 
     ('al', 'Alumnus'), 
    ) 
    type = models.CharField(max_length=2) 

我如何获得通过大学生数量排序学校一个QuerySet?

回答

0
from django.db.models import Count 
School.objects.filter(student__type='ug').annotate(
         num_students=Count('student') 
        ).order_by('num_students') 

documentationaggregatefilter子句之间的关系。

+0

如果我错了,请纠正我,但是这不会只返回至少有1名本科学生的学校吗?有没有办法对所有学校进行排序,首先根据本科生人数,然后以毕业生人数作为决胜队员? – cloudshao 2010-06-26 19:12:49

+0

我会接受这个答案,因为它确实回答了我原来的问题。将问我的第二个问题作为一个单独的问题。谢谢 :-) – cloudshao 2010-06-27 18:47:11