Django依靠连接表

时间:2014-01-29 15:15:57

标签: python django

我有很多关系,需要在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

我只是想指出输出只是一个例子,我不需要那样,只需要提供这些信息。

0 个答案:

没有答案