在DjangoORM中有时候我们需要处理多对多关系进行查询,但是默认的查询操作是不支持过滤多对多的关系,针对这个问题,我们可以通过手动的关联查询进行多对多关系的过滤。
例如,如果我们有两个模型之间具有多对多的关系,Student和Course,我们想要查询选修了C1课程的学生,可以使用以下的代码进行查询。
class Course(models.Model):
name = models.CharField(max_length=50)
students = models.ManyToManyField(Student)
class Student(models.Model):
name = models.CharField(max_length=50)
age = models.IntegerField()
Course.objects.filter(student__name='C1')
而这样的查询过程就可以完成对Student和Course之间多对多查询的过滤。