我有这样的模特:
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()
。
但是我没有获得第一个查询的数据。我相信我有数据。怎么了?
答案 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
属性,其中包含所有票证估算值的总和。