Skip to main content
 首页 » 编程设计

python之求和 Django 中的记录值

2025年05月04日21davidwang456

我在我的应用中定义了几个模型:

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