2011-09-18 61 views
0

您好,我有一個django應用程序處理銷售/採購。我想要做的是根據國家類型添加金額。想要爲每個國家添加所有金額

看看銷售表,有兩種不同的國家類型。英國和歐盟(我知道歐盟不是一個國家,但請不要介意:))

models.py

COUNTRY_TYPE_CHOICES = (
     (1, 'UK'), 
     (2, 'EU'), 
     ) 
class Sale(models.Model): 
    country_type = models.IntegerField(verbose_name = "Location", choices = COUNTRY_TYPE_CHOICES) 
    date = models.DateField() 
    amount = models.DecimalField(max_digits=20, decimal_places=2) 
    description = models.TextField(max_length = 400) 
    def __unicode__(self): 
     return unicode(self.amount) 

現在我要顯示所有銷售amount。我想要兩個結果。來自英國的所有amount的總和,以及來自歐盟的amount的總和。我很困惑,你會如何添加所有金額,因爲兩種不同的選擇類型。

這裏也是我的意見文件,這可能也有幫助。

views.py

def home(request): 
    sales = Sale.objects.all() 
    return render_to_response('home.html', {'sales':sales}, context_instance=RequestContext(request)) 

更新:到目前爲止,我已經做了

uk_sales = Sale.objects.filter(country_type='1') 

{{uk_sales}} 

在屏幕上給我:<Sale: 467.99>, <Sale: 699.99>, <Sale: 499.99>]

現在沃爾德是很好的,如果我能添加所有這些值。不算他們。

回答

0

這項工作對我來說很安靜。

uk_sales = Sale.objects.filter(country_type='1') 
uk_amount = uk_sales.aggregate(price = Sum('amount'))['price'] 
2
from django.db.models import Sum 
Sale.objects.values('country_type').annotate(Sum('amount')) 
+0

'@daniel:'有沒有辦法只打印數字?目前您的方法將在屏幕上打印:'[{'country_type':1L,'amount__sum':小數('1499.97')},{'country_type':2L,'amount__sum':小數('1000.00')}]' 。例如,我只想要'1499.97'和'1000.00'。 – Shehzad009

+1

來吧,你已經在這個網站上問了十個月的問題,你現在肯定知道足夠的Python來遍歷列表並從字典中選擇值。 –

相關問題