查询多对多字段

Posted

技术标签:

【中文标题】查询多对多字段【英文标题】:Querying over many to many field 【发布时间】:2012-04-05 18:20:03 【问题描述】:

我在我的 Django 应用程序中设置了以下模型

 class School(models.Model):
   name  = models.TextField()

 class Courses(models.Model):
   name  = models.TextField()
   schools = ManyToManyField(School)

现在,我想找出所有提供特定课程的学校。例如,查找所有提供生物和化学的学校。我可以使用什么查询?

谢谢

【问题讨论】:

【参考方案1】:

参见手册中的lookup that span relationships:

class Courses(models.Model):
   name  = models.TextField()
   schools = ManyToManyField(School, related_name='courses_set')

School.objects.filter(courses_set__name__in=('biology', 'chemistry'))

【讨论】:

我收到错误“无法将关键字课程集”解析到字段中 尝试设置related_name

以上是关于查询多对多字段的主要内容,如果未能解决你的问题,请参考以下文章

查询集中相关多对多字段的具体加载

Django ORM 查询更新反向多对多字段

Django 查询集过滤具有相同多对多字段的对象

在 django 中查询多对多字段会产生一个空查询集

Django ORM:构造查询,该查询将在多对多字段的最后位置的对象中的字段上查找匹配项

在 Django 中为多对多字段冲突反向访问器和查询?