我必须在for循环中的django模板中做一些计算,但是它没有解析for循环中的python代码并给出错误
{% 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 :(得分:2)
当然它不是&#34;解析python代码&#34; - 它是一种特定的模板语言,而不是Python。并且模板不是进行计算的地方,您应该在模型或视图中进行所有计算并将结果传递给模板。
在这种情况下,最简单的解决方案是:
1 /让ticket
对象计算它自己的总金额(nb:我认为它是一个Model
类):
class Ticket(models.Model):
# fields here
@property
def total(self):
return self.tickets_count * self.tickets_amount
2 /然后有一个简单的&#34;购物车&#34;包含票证列表并知道如何计算总票数的对象:
class Cart(object):
def __init__(self, tickets):
self.tickets = tickets
@property
def total(self):
return sum(ticket.total for ticket in self.tickets)
现在你只需要使用它的列表(或查询集fwiw)来实现Cart
并将其传递给你的模板 - 而不是模板代码中的单个计算,只是演示,问题解决。