Хотите добавить все суммы для каждой страны - PullRequest
0 голосов
/ 18 сентября 2011

Здравствуйте, у меня есть приложение 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>]

Теперь было бы хорошо, если бы я мог добавить все эти значения.Не считая их.

Ответы [ 3 ]

2 голосов
/ 18 сентября 2011
from django.db.models import Sum
Sale.objects.values('country_type').annotate(Sum('amount')) 
0 голосов
/ 21 сентября 2011

Эта работа тихо, хорошо для меня.

uk_sales = Sale.objects.filter(country_type='1')
uk_amount = uk_sales.aggregate(price = Sum('amount'))['price']
0 голосов
/ 18 сентября 2011

Если вы используете Django 1.1 или новее, вы можете использовать Django Aggregate Support с чем-то вроде:

query_amount = Item.objects.extra(select={'sum': 'sum(amount)'}).values('sum', 'amount')
query_amount.query.group_by = ['country_type']

Вот официальная документация Django по теме . А вот хороший учебник .

...