2015-02-02 133 views
3

Как рассчитать итоговые значения в шаблоне django?Django/Python: Рассчитать общую сумму в шаблоне django

Скажем, я хочу, чтобы создать счет заказов клиента, что-то вроде:

Я следующие данные:

obj = [{"location": "name", "timeSlot": '09:30 PM', "price": 2}, {"location": "name", "timeSlot": '09:30 PM', "price": 1}, {"location": "name", "timeSlot": '09:30 PM', "price": 3}, {"location": "name", "timeSlot": '09:30 PM', "price": 2}, {"location": "name", "timeSlot": '09:30 PM', "price": 4}] 

Желаемая Report Output

-------------------- 
     09:30 PM 
    -------------------- 
    1 name $ 2 
    2 name $ 1 
    3 name $ 3 
    4 name $ 4 
------------------------ 
    Total  $ 10 
+0

Шаблон не подходит для этого: вид. Каков источник этих данных? Это результат типового запроса? Если да, пожалуйста, покажите это. –

+0

Данные передаются в формате arg в формате json для html-шаблона. i.e args ['obj'] = orderList –

+0

Это не то, что я спросил. Откуда он? –

ответ

1

Шаблон не является правильным место для этого. Вы должны сделать это либо в своем представлении, либо в модели. Например, после того, как вы получите ваши заказы, вы можете сделать что-то вроде этого:

orders=order.objects.filter(id=timeslot) 
total = 0 
for order in orders: 
    total += order['price'] 

return render(request, 'your_template', {'orders': orders, 'total': total}) 

Теперь общий будет доступен в шаблоне вместе с заказами

0

я использовал пользовательский фильтр для этого.

Вот мой customFilter.py код

from django import template 
register = template.Library() 

@register.filter 
def slotTotalAmount(arg): 
    return sum(d.get('price') for d in arg) 

Его мой Джанго код шаблона

{% load custom_filters %} 
<span class="pull-left" ><b>Total</b></span> 
<span class="pull-right"><b>{{Obj|slotTotalAmount|floatformat:0}}</b></span> 

Его довольно легко писать один и тот же результат дают в обоих случаях, т.е. написано в view.py и customFilter.py.