我试图将3个变量传递给自定义过滤器,但我做不到。 Django中有这种可能性吗?
{{ item.cost|pay_blago:'{{item.can_pay_blago_to_currency}}, {{item.rest}}'}}
@register.filter
def pay_blago(cost, args):
print(args.split(','))
答案 0 :(得分:1)
如果您需要某个Item
实例的函数,最简单的方法是在Item
上定义一个属性。在模板中,说
{{item.cost_pay_blago}}
和Item
模型上
# this is needed by template foo/bar.html
@property
def cost_pay_blago( self):
result = # some value based on self.cost, self.rest and self.can_pay_blago_to_currency
return result
如果item
不是模型实例,或者该函数将来自多个对象的数据汇总在一起,则可能在视图中对其进行计算,然后将其放入要针对其呈现模板的上下文中。
或者您可以使用Jinja模板引擎,但是如果它很小,那将是一个很大的锤子。
答案 1 :(得分:0)
Django仅允许使用一个参数。您可以将其作为列表/元组发送并在过滤器中拆分。
(wontfix标志)也有一张票 https://code.djangoproject.com/ticket/1199