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

时间:2018-04-17 17:47:34

标签: django django-templates django-template-filters

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

{{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'

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

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

2 个答案:

答案 0 :(得分:1)

您只需将过滤结果通过“with”置于另一个名称下。之后,您可以访问元素的属性。

答案 1 :(得分:0)

你不能以这种方式使用它,它不是它的工作方式。因为我们无法看到你的过滤器在做什么,所以我可以提出两点建议:

  1. 创建另一个过滤器或向过滤器df["list_ids"] = df["list_ids"].apply(lambda x: [val for val in x if val in good_ids]) print(df) # phase list_ids #id #a1 1 [a2, c3] #a2 3 [b2, c3] #b1 3 [a2, b2] #b2 2 [b1, b2] #b3 3 [b2] #c1 1 [a2, c3] #c2 1 [b1] #c3 2 [] #c4 1 [] 添加更多参数 然后在您的过滤器拆分值:

    get_item:'price,service'
  2. 在模型中创建一个函数而不是模板过滤器并在那里进行过滤。

    def get_item(value):
        values_list = value.split(",")
        # do something with values from the list
    
  3. 然后在您的模板中def get_item(self): price = # your logic return price.service