Python 联接表上的Django计数

Python 联接表上的Django计数,python,django,Python,Django,我有一个多对多的关系,需要在Django和另一个专栏中计算,例如 Student: ID Name Lessons Lesson: ID Name Date Type Students 所以现在一个学生有很多课,一节课有很多学生,如果我做一个查询,它会告诉我: 按月计算,该月内所有课程的学生总数,并按课程类型划分 所以它会说: January: Maths: 3 lessons, 20 students English 3 lessons, 3

我有一个多对多的关系,需要在Django和另一个专栏中计算,例如

Student:
  ID
  Name
  Lessons

Lesson:
  ID
  Name
  Date
  Type
  Students
所以现在一个学生有很多课,一节课有很多学生,如果我做一个查询,它会告诉我:

按月计算,该月内所有课程的学生总数,并按课程类型划分

所以它会说:

January:
    Maths: 3 lessons, 20 students
    English 3 lessons, 30 students
到目前为止,这就是我所拥有的

l = Lessons.objects.extra({'month':truncate_date})
l = l.values('lesson_type', 'month'
          ).order_by(
             ).annotate(Count('lesson_type')
          ).order_by('lesson_date'
            ).annotate(students=Count('students'))
问题是,当我只计算课程数量时,我得到了正确的值,但当我同时计算两者时,学生数量和课程数量是相同的,因为加入了。有没有一种方法可以使用子查询来计算第二列

更好的例子:

January:
    Lesson 1:
        Type: Math
        Students: 10
    Lesson 2:
        Type: Math
        Students: 3
    Lesson 3:
        Type: Math
        Students: 7
    Lesson 4:
        Type: English
        Students: 13
    Lesson 5:
        Type: English
        Students: 7
February:
    Lesson 1:
        Type: Math
        Students: 10
    Lesson 2:
        Type: Math
        Students: 3
    Lesson 3:
        Type: English
        Students: 7
    Lesson 4:
        Type: English
        Students: 13
    Lesson 5:
        Type: English
        Students: 7
所以输出应该是

January:
    Maths: 3 lessons, 20 students
    English: 2 lessons, 20 students
February:
    Maths: 2 lessons, 13 students
    English: 3 lessons, 27 students

我只想指出,输出只是一个示例,我不需要这样,只需要这些信息可用。

并将它们除以课程类型??是的,准确地说,每个月你会有一节课上多少次,有多少学生去上那节课,比如说一个月有20个人去上一节数学课,一个月有3节课。如果三节课上有20个学生,而不是3节课,那么60个学生-期望的输出是3节课,20名学生。不,不只是总数,所以X课X学生,课程可以有任意数量的学生,所以第1课有10名学生,第2课有3名学生,第3课有7名学生,它将显示3课20名学生。我在那里编辑了问题,以便给出更好的想法