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

时间:2017-05-22 14:47:40

标签: python 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')

1 个答案:

答案 0 :(得分:0)

你需要django聚合doc

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

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