У меня есть следующий YAML в моем Столбе Соленого стека:
prometheus:
services:
cassandra:
enabled: False
cockroachdb:
enabled: True
haproxy:
enabled: True
swift:
enabled: False
Я хочу иметь возможность перебирать список включенных служб.
{% for enabled_service_name in prometheus.services | selectattr('enabled') %}
{{ enabled_service_name }}
{% endfor %}
Однако это не работает, поскольку атрибут, который я пытаюсь отфильтровать, находится во вложенном словаре под именем службы:
{'cassandra': {'enabled': False},
'cockroachdb': {'enabled': True},
'haproxy': {'enabled': True},
'swift': {'enabled': False}}
Очевидно, что я могу добиться того, чего хочу, применяя условный тест внутри цикла:
{% for name, properties in prometheus.services | dictsort %}
{% if properties.enabled %}
configuration for {{ name }}
{% endif %}
{% endfor %}
Однако я буду часто повторять этот список и предпочел бы, чтобы Джинджа применил встроенный фильтр в цикле for.
Есть ли способ фильтрации по значению элемента во вложенном словаре?