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')

你需要 Django 聚合文档

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

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

最新更新