0

내 프로젝트에서 이 여러 개있을 수있는 Organization이라는 모델이 있습니다. 각 캠페인에는 복수 개의 donor이있을 수 있습니다. 내가 뭘하고 싶은 것은 다음 기증자 (donor.amount)에 의해 만들어진 모든 금액의 합계를 표시 캠페인을 보여줄 것입니다Django 여러 개체에 대한 집계 쿼리 값

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) 

: 희망 여기에 명확하게 나의 모델처럼 보이는 것입니다. 예를 들어 'Campaign1'에 3 명의 기부자가 있고 5 명이 기부하면 템플릿에 'Campaign1 : $ 15'이라고 표시됩니다.

이 작업을 어떻게 수행 할 수 있습니까? 내 템플릿에서 이전 관계를 사용하려고 생각했지만이 방법으로 집계를 만들 수는 없습니다. 어떤 도움을 주셔서 감사합니다.

답변

2

이 정보를 얻으려면 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) 
0

당신이 시도 할 수 있습니다 :

from django.db.models import 
a = Campaign.objects.get(pk=1) 
a.annotate(total_donnation=Sum('donor__amount')) 
같은 시도