Django ORM模拟MS SQL rank-partition by子句
假设我想在Django模板中呈现一个包含三列的表。第一栏为学生姓名,第二栏为学生所在的大学,第三栏为该大学的学生总数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 目前,我在学生模型中定义了一个自定义方法,如下所示:
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的高级主题还不熟悉,我只是想了解深入挖掘的方向