Python Django过滤器在多对多字段中最常见

Python Django过滤器在多对多字段中最常见,python,django,Python,Django,我想根据我的多对多字段(charfield)的最常见出现(模式)筛选/排除我的查询集: 例如,在我下面的示例中,我想在包含有学生的教室的班级中进行筛选,其中“David”是班级中最常见的名字。(Django版本1.9.2) 您需要django聚合 您的查询将是这样的(我不确定它是否是准确的查询,但使用文档和此示例,您将了解它的工作原理) “devid_count”应该是“david_count”吗?@david是的,这是打字错误:-) #models.py class Student(model

我想根据我的多对多字段(charfield)的最常见出现(模式)筛选/排除我的查询集:

例如,在我下面的示例中,我想在包含有学生的教室的班级中进行筛选,其中“David”是班级中最常见的名字。(Django版本1.9.2)


您需要django聚合

您的查询将是这样的(我不确定它是否是准确的查询,但使用文档和此示例,您将了解它的工作原理)


“devid_count”应该是“david_count”吗?@david是的,这是打字错误:-)
#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')
Class.objects.filter(
    students__name="David"
).annotate(
    david_count=Count('students')
).order_by(
    'david_count'
)