2017-05-22 83 views
0

我想根据我的多对多领域最常见的发生(模式),这是一个charfield过滤/排除我的查询集:的Django上最常出现过滤器在很多很多领域

对于在下面的例子中,我想过滤包含学生的班级,其中“David”是班级中最常见的名字。 (Django的版本1.9.2)

#models.py 
class Student(models.Model): 
    name = models.CharField() 

class Class(models.Model): 
    name = models.CharField() 
    students = models.ManyToManyField(Student) 

#views.py 
Class.objects.filter(students__mode = 'David') 

回答

0

你需要的Django聚合doc

您的查询就会是这样的(我不知道它的确切查询或没有,但使用的文档,这样你将得到它的想法是如何工作的)

Class.objects.filter(
    students__name="David" 
).annotate(
    david_count=Count('students') 
).order_by(
    'david_count' 
) 
+0

“devid_count”应该是“david_count”吗? – David

+0

@大卫是的,这是错字:-)) – aliva