2015-03-03 60 views
3

我必须在django模板中减去两个值。我怎样才能做到这一点 ?在Django模板中减去两个变量

{{ obj.loan_amount }} - {{ obj.service_charge }} 
+1

它包括减法像{{myval | add:“ - 5”}}。但在这里我打算进行可变减法。 – LaksHmiSekhar 2015-03-03 10:38:18

+0

正如我在上面的链接,你可以创建自己的过滤器...但为什么不在视图中做这个? – rnevius 2015-03-03 10:46:38

回答

2

有2种方法可以做到这一点。

1)更优选的方式(基于业务逻辑和模板逻辑的分离),是计算你想要在views.py中做什么,然后通过上下文传递值。例如:

class FooView(View): 
    def get(self, request, *args, **kwargs): 
     obj = Foo.objects.get(pk=1) 
     obj_difference = obj.loan_amount - obj.service_charge 
     return render(request, 'index.html', {'obj': obj, 
               'obj_difference': obj_difference}) 

这将允许你在你的模板直接使用{{ obj_difference }}

2)做这件事的第二种方法不太理想,就是使用模板标签。

@register.simple_tag(takes_context=True) 
def subtractify(context, obj): 
    newval = obj.loan_amount - obj.service_charge 
    return newval 

这将允许您在您的模板中使用{% subtractify obj %}

注意:如果您使用方法#2,请不要忘记在HTML文件的顶部使用{% load [tagname] %}

+1

除了不会在加载标签中使用“py”扩展名外,还有很好的答案。 – 2015-03-03 11:15:56

+0

谢谢......它有帮助。 – LaksHmiSekhar 2015-03-03 12:52:02