我试图根据属性过滤列表。如果我将该属性用作字符串,一切正常:
{% set ys = xs | selectattr("type", "equalto", "first") | list %}
如果我尝试使用变量(在我的情况下是枚举的属性),我会返回一个空列表
{% set ys = xs | selectattr("type", "equalto", MyEnum.FIRST) | list %}
变量MyEnum.FIRST
包含字符串" first"。
答案 0 :(得分:1)
您正确传入变量,但如果现在获得一个空列表,则'first'
不会生成字符串MyEnum
。
如果{% set ys = xs | selectattr("type", "equalto", MyEnum.FIRST.value) | list %}
是enum.Enum
subclass,则属性将是该类的实例。使用.value
attribute获取实际的字符串值:
>>> import enum
>>> class MyEnum(enum.Enum):
... FIRST = 'first'
... SECOND = 'second'
...
>>> MyEnum.FIRST
<MyEnum.FIRST: 'first'>
>>> MyEnum.FIRST.value
'first'
快速演示以展示枚举的工作方式以及您需要属性的原因:
{{1}}