Django 聚合多个对象的查询值
Django Aggregate Query Values for Multiple Objects
在我的项目中,我有一个名为 Organization
的模型,它可以有多个 Campaign
。然后每个广告系列可以有多个 donor
。希望在这里澄清一下我的模型是什么样的:
class Campaign(models.Model):
name = models.CharField()
organization = models.ForeignKey('org.Organization')
class Donor(models.Model):
lead = models.ForeignKey('org.Lead')
amount = models.DecimalField()
campaign = models.ForeignKey(Campaign)
我想做的是展示一个活动,然后显示捐助者所做的所有金额的总和 (donor.amount
)。因此,例如,如果 "Campaign1" 有三个捐赠者,每人捐赠了 5 美元,那么在我的模板中它将显示:"Campaign1: ."
知道如何完成这个吗?我正在考虑在我的模板中使用向后关系,但您不能以这种方式创建聚合。谢谢你的帮助。
您应该可以使用 annotate
获取此信息。尝试类似的东西:
from django.db.models import Sum
campaigns = Campaign.objects.annotate(total_donations=Sum('donor__amount'))
然后您可以查看每个活动的总捐款:
for campaign in campaigns:
print "%s: $%s" % (campaign.name, campaign.total_donations)
你可以试试:
from django.db.models import
a = Campaign.objects.get(pk=1)
a.annotate(total_donnation=Sum('donor__amount'))
在我的项目中,我有一个名为 Organization
的模型,它可以有多个 Campaign
。然后每个广告系列可以有多个 donor
。希望在这里澄清一下我的模型是什么样的:
class Campaign(models.Model):
name = models.CharField()
organization = models.ForeignKey('org.Organization')
class Donor(models.Model):
lead = models.ForeignKey('org.Lead')
amount = models.DecimalField()
campaign = models.ForeignKey(Campaign)
我想做的是展示一个活动,然后显示捐助者所做的所有金额的总和 (donor.amount
)。因此,例如,如果 "Campaign1" 有三个捐赠者,每人捐赠了 5 美元,那么在我的模板中它将显示:"Campaign1: ."
知道如何完成这个吗?我正在考虑在我的模板中使用向后关系,但您不能以这种方式创建聚合。谢谢你的帮助。
您应该可以使用 annotate
获取此信息。尝试类似的东西:
from django.db.models import Sum
campaigns = Campaign.objects.annotate(total_donations=Sum('donor__amount'))
然后您可以查看每个活动的总捐款:
for campaign in campaigns:
print "%s: $%s" % (campaign.name, campaign.total_donations)
你可以试试:
from django.db.models import
a = Campaign.objects.get(pk=1)
a.annotate(total_donnation=Sum('donor__amount'))