如何在Django中查找查询中所有估计的总和

时间:2013-11-18 09:04:17

标签: django django-queryset

我有这样的模特:

class Person(models.Model):
    first_name = models.CharField(max_length=60)
    last_name = models.CharField(max_length=60)

class Ticket(models.Model):
    assigned_to = models.ForeignKey(Person, null=True, blank=True)
    estimate = models.DecimalField(null=True, blank=True, decimal_places=1, max_digits=4)

我想查找分配给特定人员的所有门票的所有估算值。

我正在尝试:

for i in Person.objects.all():
    Ticket.objects.filter(assigned_to=i)

并使用Sum()为每个模型添加estimate()

但是我没有获得第一个查询的数据。我相信我有数据。怎么了?

2 个答案:

答案 0 :(得分:0)

假设你知道这个人试试这个:

estimate_total = Decimal(0)
ticket_list = Ticket.objects.filter(assigned_to = person.id)
for i in range(len(ticket_list)):
    estimate_total += ticket_list[i].estimate

答案 1 :(得分:0)

您可以使用聚合完全在数据库中完成此操作。

from django.db.models import Sum
people_with_estimates = Person.objects.all().annotate(
    estimate_total=Sum('ticket__estimate'))

现在每个人都有一个estimate_total属性,其中包含所有票证估算值的总和。