Python 如何根据关系字段上的条件进行聚合排序
我的代码:Python 如何根据关系字段上的条件进行聚合排序,python,django,django-models,Python,Django,Django Models,我的代码: class School(models.Model): pass class Student(models.Model): school = models.ForeignKey(School) TYPE_CHOICES = ( ('ug', 'Undergraduate'), ('gr', 'Graduate'), ('al', 'Alumnus'), ) type = models.CharField
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)
如何获得按本科生数量排序的学校查询集
from django.db.models import Count
School.objects.filter(student__type='ug').annotate(
num_students=Count('student')
).order_by('num_students')
请参阅关于
aggregate
和filter
之间关系的条款。如果我错了,请纠正我的错误,但这不只是返回至少有1名本科生的学校吗?有没有一种方法可以将所有的学校进行分类,首先是按本科生的数量,然后按毕业生的数量进行排名?我接受这个答案,因为它确实回答了我最初的问题。我将单独提出第二个问题。谢谢:-)