在模板中过滤后访问模型元素

Access to the model element after filtering in the template

在模板中应用过滤器后我无法访问模型字段,如下所示:

{{service_item_v|get_first|first|get_item:'price'.service}}

问题是它抛出错误:

TemplateSyntaxError at /payment/

Could not parse the remainder: '.service' from 'service_item_v|get_first|first|get_item:'price'.service'

如果您从点中删除字段名称,则该元素会正确找到。元素也有这个字段,因为如果你不应用过滤器它就会得到它。

问题是在这种情况下如何访问该字段?

你只需要把"with"过滤的结果换个名字就行了。然后你可以访问元素的属性。

你不能那样使用它,它不是这样工作的。因为我们看不到你的过滤器在做什么,我可以建议两件事:

  1. 创建另一个过滤器或向您的过滤器添加更多参数get_item:'price,service' 然后在您的过滤器拆分值中:

    def get_item(value):
        values_list = value.split(",")
        # do something with values from the list
    
  2. 在您的模型中创建一个函数而不是模板过滤器并在那里进行过滤。

    def get_item(self):
        price = # your logic
        return price.service
    

然后在您的模板中 {{ service_item_v.get_item }}