用于MS SQL排名的Django ORM模拟 - 按子句分区

时间:2016-08-06 09:52:56

标签: django orm

假设我想在包含三列的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方法中完成了一些复杂而昂贵的操作,那么我担心的是我必须反复命中数据库并通过它曾经做过的相同计算来加载服务器(fe,当渲染John,I& #39;计算了牛津的计数,我想避免第二次计算它为莎莉)。我想知道Django是否提供了任何解决方案来使这段代码更清晰和最优。可能性已经提出了类似的问题,我只是对Django的高级主题不熟悉,我只想了解哪个方向需要深入挖掘。

0 个答案:

没有答案