【发布时间】:2010-11-12 04:11:19
【问题描述】:
让我们看看下面的 M2M 场景。
我想获取任何给定学生的所有同事,以及他们都参加的课程数量。 (表示给定学生与他的每一位同事有多少相同的课程。)
class Student(models.Model):
pass
class Course(models.Model):
students = models.ManyToManyField(Student, through='Attendance')
class Attendance(models.Model):
student = models.ForeignKey(Student)
course = models.ForeignKey(Course)
查询看起来像这样
SELECT
S.id AS student_id,
A2.student_id AS colleague_id,
COUNT(A2.course_id) AS number_of_courses_both_of_them_attend
FROM student S
JOIN attendance A1
ON S.id = A1.student_id
JOIN attendance A2
ON (A1.course_id = A2.course_id AND A1.student_id != A2.student_id)
GROUP BY 1, 2
如果有任何关于如何使用 QuerySet 方法完成此任务的提示,我将不胜感激。
谢谢!
【问题讨论】:
-
这个 (code.djangoproject.com/ticket/8375) 可以解决我的问题。不幸的是,它处于 Someday/Maybe 状态..
标签: django-models join count