2010-10-13 52 views
4

我有一個視圖,返回按sales_date分組的銷售摘要,例如如何在django模板中實現一個運行總計?

[{'sale_date':datetime.datetime(2010,10,5,0,0), 'salesum':2, 'item':1}, 
{'sale_date':datetime.datetime(2010,10,5,0,0), 'salesum':10,'item':3}, 
{'sale_date':datetime.datetime(2010,10,6,0,0), 'salesum':1, 'item':1}] 

我也做了模板中的分組,並與HTML UL李相結合它標籤給我基礎上,SALE_DATE

我的模板分組基於一個不錯的分組效果驗證碼:

{% regroup salecursor by sale_date|date:"j/m/Y" as salelist %} 

{{ saleitem.grouper } 

結果是:

05/10/2010

  • ITEM1名稱 - 2
  • ITEM2名稱 - 10

06/10/2010

  • 項目1名 - 1

您是如何獲得每個組即組應該有共12個,第二組共1和具有這種效果的東西總運行;

05/10/2010

  • ITEM1名稱 - 2
  • ITEM2名稱 - 10

    共計12

06/10/2010

  • 項目1名 - 1

    共1

感謝 迦特

回答

10

什麼?你不知道running_total過濾器嗎?

只是在那邊開玩笑。沒有這樣的一個,但寫起來很容易。這有點低效,因爲它再次遍歷分組列表sum,salesum值。

# app_filters.py 
@register.filter 
def running_total(sales_list): 
    return sum(d.get('salesum') for d in sales_list) 

而且你可以在你的模板這樣使用它:

{% regroup salecursor by sale_date|date:"j/m/Y" as salelist %} 

<ul> 
{% for sales in salelist %} 
    <li>{{ sales.grouper }} 
    <ul> 
     {% for item in sales.list %} 
     <li>{{ item.item }} - {{ item.salesum }}</li> 
     {% endfor %} 

     <li>Total: <b>{{ sales.list|running_total }}</b></li> 
    </ul> 
    </li> 
{% endfor %} 
</ul> 
+0

非常有幫助,謝謝。在我的情況下,我需要以這種方式解決對象:'sum(銷售清單中的d.salesum)',否則我得到'Sale'沒有屬性「get」錯誤。 – 2013-05-24 18:55:33

+0

真的很不錯的解決方案。非常感謝 – 2017-05-18 09:57:11

相關問題