2014-01-28 58 views
0

我想在我的模板中顯示小計的總和。Django循環模板中行的總和

{% for quote in quotes %} 
    {% for product in quote.purchase_quote_products_set.all %} 
     {{product.subtotal}} | 
    {% endfor %} 
    <span id="total"></span> 
{% endfor %} 

我的結果。

15 | 120 | 2000 | 

有什麼辦法,以顯示內部span#total

<span id="total">{{ sum_of_subtotal }}</span> 
+0

在變量聲明的模板中使用'set'。爲總數做過濾器。 'HTTP:// stackoverflow.com /問題/ 5275639 /總和功能於HTML中使用模板,模板,tag' –

回答

3

最好是在Django的觀點,而不是模板進行這樣的算術小計的總和。對於例如你可以找到在視圖本身的總和:

from django.db.models import Sum 
total_price = Quotes.objects.all().annotate(total=Sum('purchase_quote_products__subtotal')) 

然後模板可以使用:

<span id="total">{{ quote.total }}</span> 
1

如果你想計算上的模板,然後在Django模板有一些所謂的過濾器用於在呈現UI之前更改變量的值。

自定義過濾器就是有一個或兩個參數的Python功能:

  • 變量(輸入)的值 - 不一定是字符串。
  • 參數的值 - 這可以有一個默認值,或完全省略。
  • 例如,在過濾器{{var | foo:「bar」}}中,過濾器foo將傳遞變量var和參數「bar」。

過濾器函數應該總是返回一些東西。他們不應該提出例外。他們應該默默地失敗。如果出現錯誤,他們應該返回原始輸入或空字符串 - 無論哪個更有意義。

下面是一個例子過濾器定義:

def cut(value, arg): 
    """Removes all values of arg from the given string""" 
    return value.replace(arg, '') 

這裏有一個如何該過濾器將使用一個例子:

{{ somevariable|cut:"0" }} 

請閱讀以下文檔的更多信息,custom_template