0
我在我的应用程序中设置了以下型号:Django - 如何从多对多关系中的中介模型中检索数据?
- 课
- 学生
- 评价
的课程和学生车型必须通过评估一个多到多的关系。在评估模式中,我还存储了课程收到的费用。我知道我应该真的把它存储在课程模型中,然后乘以学生人数,但有时出于某种原因,学生可能无法全额支付课程费用,所以我需要对个人基础进行跟踪。
我想在给定的时间内创建所有课程的列表,包括显示教训
- 总量列那段时间。
目前,我只是用一个通用视图返回的教训和我有我的课模型中定义一个简单的方法,计算出接收到的总费用:
def total_fee(self):
evaluations = self.evaluation_set.all()
total = 0;
for e in evaluations:
total += e.fee_paid
return total
不过,我m运行调试工具栏,这告诉我,当我运行它时,这个视图需要87个独立的SQL查询!
显然,我不能每次都这么做。我怎样才能一次获取所有数据?
任何意见将不胜感激。
谢谢。
谢谢,大概这会给他们所有人的总数?它也可以用于单个行吗?各行的 – Dan
查看注释功能。 [django-annotations](https://docs.djangoproject.com/en/dev/topics/db/aggregation/#generating-aggregates-for-each-item-in-a-queryset) – mklauber
这将总结所有的给定查询集中所有行中'fee_paid'的列值。这将是所有费用的总和。我不确定你对个别行的问题的含义。你怎么能总结一排? :-) 如果你的意思是它可以在另一个行子集上工作,那么是的。另外,如果您认为这可以正确回答您的问题,请将其标记为已回答并给我一个投票。非常感谢。谢谢。 – jnadro52