如何在django模板中减去两个字段?

时间:2017-04-07 15:33:18

标签: python django

在标记为与SO上的许多其他问题重复之前,请阅读。我有三个字段Credit AvailableCredit LimitCredit Balance。我从我的数据库中获取Credit LimitCredit Balance的值。要显示Credit Available,我想Credit Limit - Credit Balance。我尝试从stackoverflow上的其他答案执行此操作,但它们无法正常工作

<tr>
    <td style="text-align:center">{{ credit.credit_limit|add:"-{{credit.credit_balance}}" }}</td>
    <td align="center">{{ credit.credit_limit}}</td>
    <td align="center">{{ credit.credit_balance }}</td>
</tr>

我可以在不编写新模板标签或使用mathfilter模块的情况下执行此操作吗?

2 个答案:

答案 0 :(得分:1)

将余额添加到余额的正确语法是

{{ credit.credit_limit|add:credit.credit_balance }}

根据https://docs.djangoproject.com/en/1.10/ref/templates/builtins/#add。 不幸的是,在变量前放一个减号不会使其变为负值。

您可以使用custom template filter,这相当简单。它可能看起来像这样:

@register.filter(name='subtract')
def subtract(value, arg):
    return value - arg

然后在你的模板中(加载后)它将是:

{{ credit.credit_limit|subtract:credit.credit_balance }}

答案 1 :(得分:0)

我试图在这里解释的是另一种方式:

Variable subtraction in django templates

我确定这种方法也可以应用于您的问题。

我很确定无论如何还是要使用自定义模板帮助器还是更好。 将计算出的值添加到视图/模型imo中也没错。

希望这会有所帮助。