我在我的应用中定义了几个模型:
class Project(models.Model):
title = models.CharField(max_length=150)
url = models.URLField()
manager = models.ForeignKey(User)
class Cost(models.Model):
project = models.ForeignKey(Project)
cost = models.FloatField()
date = models.DateField()
我想汇总每个项目的成本并呈现值view.py
:
from mypm.costs.models import Project, Cost
from django.shortcuts import render_to_response
from django.db.models import Avg, Sum
def index(request):
# ...
return render_to_response('index.html',...
在 Django ORM 中解决此类聚合的最佳方法是什么?
最佳答案
Alexander 的解决方案将为您提供正确的结果,但每个项目都有一个查询。使用
注释
在单个查询中完成所有事情。
from django.db.models import Sum
annotated_projects = Project.objects.all().annotate(cost_sum=Sum('cost__cost'))
for project in annotated_projects:
print project.title, project.cost_sum
关于python - 求和 Django 中的记录值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2828343/