2016-11-17 89 views
-1

我必須做在裏面Django的模板環路一些計算,但它不是解析Python代碼在for循環中,並給予錯誤怎麼辦計算在for循環中在Django模板

{% for ticket in tickets_in_cart %} 
    <div class="davis-date-time"> 
     <h3>{{ ticket.performance_id__event_start_date|date:"M d" }}</h3> 
     <p>{{ ticket.performance_id__timing }}</p> 
    </div> 
    <div class="davis-date-time"> 
     <h3>{{ ticket.performance_id__city }}</h3> 
     <p>{{ ticket.performance_id__venue }}</p> 
    </div> 
    {% singleAmount = ticket.tickets_count*ticket.tickets_amount %} 
    {% finalAmount += singleAmount %} 

{% endfor %} 

我要這樣做是因爲我需要在for循環之外打印這個finalAmount變量值。

+0

那是因爲它不是python。 – Sayse

回答

2

當然,它不是「解析python代碼」 - 它是一種特定的模板語言,而不是Python。並且模板不是進行計算的地方,您應該在模型中進行所有計算或查看並將結果傳遞給模板。

在這種情況下最簡單的解決辦法是:

1 /使ticket對象計算它自己的總量(NB:我假設它是一個Model類):

class Ticket(models.Model): 
    # fields here 

    @property 
    def total(self): 
     return self.tickets_count * self.tickets_amount 

2 /那麼有一個簡單的「購物車」對象,持有門票的列表,並知道如何計算總:

class Cart(object): 
    def __init__(self, tickets): 
     self.tickets = tickets 

    @property 
    def total(self): 
     return sum(ticket.total for ticket in self.tickets) 

而現在你只需要實例化一個Cart與它的門票列表(或queryset fwiw)並將其傳遞給您的模板 - 不是模板代碼中的單個計算,只是演示文稿,問題已解決。