Jinja2将float转换为十进制mid计算

时间:2015-03-24 17:08:15

标签: python flask jinja2

由于一些糟糕的设计决定(不是我自己做的),我留下了一个小小的难题。

我从之前的数据库查询中获得了一些代码..

{{ 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内部是否有可行的解决方案?

1 个答案:

答案 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 }}