由于一些糟糕的设计决定(不是我自己做的),我留下了一个小小的难题。
我从之前的数据库查询中获得了一些代码..
{{ order.pa_tranlength * order.pa_width * order.pa_costprice }}
这很好,但是数据库所有者现在已经升级了数据库结构,最后一个值order.pa_costprice现在是一个浮点数,其他两个变量是十进制的。有没有办法可以将order.pa_costprice转换为飞行计算中的小数。
我尝试了类似的事情。
{{ order.pa_tranlength * order.pa_width * "%d" order.pa_costprice}}
这显然不会像它的字符串值那样起作用(我在匆忙中进行了测试,但无济于事),但你可以了解我想要做的事情。
这个循环非常庞大,直接来自数据库查询,所以我试图找到一个解决方案,这意味着我不必在查询结果到达模板之前修改任何代码。
Jinja2内部是否有可行的解决方案?
答案 0 :(得分:1)
您不会修改查询代码,但如果您可以更改代码,则可以创建template filter:
@app.template_filter('to_decimal')
def to_decimal_filter(f):
return decimal.Decimal(f)
所以:
{{ order.pa_tranlength * order.pa_width * order.pa_costprice }}
变为:
{{ order.pa_tranlength * order.pa_width * order.pa_costprice|to_decimal }}