Django聚合多个对象的查询值
在我的项目中,我有一个名为Django聚合多个对象的查询值,django,django-models,django-templates,django-views,django-aggregation,Django,Django Models,Django Templates,Django Views,Django Aggregation,在我的项目中,我有一个名为组织的模型,它可以有多个活动。然后,每个活动可以有多个捐赠者。希望在此澄清我的模型是什么样子的: class Campaign(models.Model): name = models.CharField() organization = models.ForeignKey('org.Organization') class Donor(models.Model): lead = models.ForeignKey('org.Lead')
组织
的模型,它可以有多个活动
。然后,每个活动可以有多个捐赠者。希望在此澄清我的模型是什么样子的:
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)
我想做的是显示一个活动,然后显示捐赠者的所有金额的总和(provider.amount
)。例如,如果“活动1”有三个捐赠者,每个捐赠者捐赠了5美元,在我的模板中会显示:“活动1:$15。”
你知道我怎样才能做到这一点吗?我曾考虑在模板中使用反向关系,但您不能以这种方式创建聚合。谢谢你的帮助 您应该能够使用注释
获取此信息。尝试以下方法:
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 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'))
您可以尝试:
from django.db.models import
a = Campaign.objects.get(pk=1)
a.annotate(total_donnation=Sum('donor__amount'))