Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django ORM模拟MS SQL rank-partition by子句_Django_Orm - Fatal编程技术网

Django ORM模拟MS SQL rank-partition by子句

Django ORM模拟MS SQL rank-partition by子句,django,orm,Django,Orm,假设我想在Django模板中呈现一个包含三列的表。第一栏为学生姓名,第二栏为学生所在的大学,第三栏为该大学的学生总数 Student University University statistics John Oxford 13 Micheal MIT 10 Sally Oxford 13 Steven MIT 10 Jessica Harvard 8 目前,我在学生模型中定义了一个自定义方法,如下所示:

假设我想在Django模板中呈现一个包含三列的表。第一栏为学生姓名,第二栏为学生所在的大学,第三栏为该大学的学生总数

Student  University  University statistics

John       Oxford    13
Micheal    MIT       10
Sally      Oxford    13
Steven     MIT       10
Jessica    Harvard   8
目前,我在学生模型中定义了一个自定义方法,如下所示:

class Student(models.Model)
    university = models.ForeignKey(University,....)

class University(models.Model)
    # university characteristics

    def get_student_count(self)
         return Student.objects.filter(university =self).count()
模板:

<table>
   ...
   {{student.university.get_student_count}}
   ...
</table>

...
{{学生。大学。获得学生人数}
...
在这个简化的方法中,计数或多或少是廉价的操作,这种方法解决了这个问题。但是,如果在get_student_count方法中执行了一些复杂而昂贵的操作,那么我担心的是,我必须重复使用数据库并加载服务器,这与它已经执行过的计算相同(f.e.在给约翰讲课时,我已经计算了牛津大学的分数,我想避免第二次给萨利计算)。我想知道Django是否提供了任何解决方案来使代码更加清晰和优化。很可能已经有人问过类似的问题,只是我对Django的高级主题还不熟悉,我只是想了解深入挖掘的方向