2016-01-24 39 views
1

我有namedtuples的集合,它是這樣的:如何過濾jinja2模板中的集合?

[('mountpoint=X',state='UP'),(mountpoint='Y',state='DOWN'),(mountpoint='Z',state='DOWN'...)] 

我通過這個集合到我的模板之一。我想根據狀態過濾該集合。嘗試了以下無濟於事

{% for state in states|selectattr('state','down') %} 
TemplateRuntimeError: no test named 'down' 

    {% for state in states|selectattr(state='down') %} 
FilterArgumentError: Missing parameter for attribute name 

    {% for state in states|select(state='down') %} 
No error, but doesn't filter at all. 

回答

2

使用equalto測試:

{% for state in states|selectattr('state', 'equalto', 'down') %} 
+0

'{%在狀態狀態| selectattr( 「狀態」, 「equalto」, 「DOWN」)%}' - >'TemplateRuntimeError:沒有名爲'equalto''的測試 – ychaouche

+0

也許是一個jinja2版本的問題。我有2.7.3 – ychaouche

+1

@ychaouche:它被添加到Jinja 2.8中。 – vaultah