Вопрос по Jinja2 шаблон у

Собрал следующий шаблон

{% set operations = operations or [] %}
{% set search_key = ['to', 'from', 'description'] %}
{% set comma = joiner(',') %}
[
  {% for operation in operations %}
    {% set data = {'id': operation.id, 'state': operation.state, 'date': operation.date} %}
    {% for k, v in operation.items() %}
      {% if k in search_key %}
        {{ data.update({k: v}) }}
      {% endif %}
    {% endfor %}
    {{ comma() }}
    {{ data|tojson }}
  {% endfor %}
]

Он обрабатывает следующий объект:

"operations": [
    {
        "id": 3216421913,
        "state": "STATE",
        "date": "2020-07-20",
        "description": "Тест",
        "operation": {},
        "type": "payment",
        "form": "Test_Form"
    }
]

Но в результат не попадают поля которые добавляю в условии

{% for k, v in operation.items() %}
      {% if k in search_key %}
        {{ data.update({k: v}) }}
      {% endif %}
    {% endfor %}

Подскажите в чем может быть проблема?


Ответы (1 шт):

Автор решения: alex

В первой строке, ты учитываешь ситуацию при которой operations может быть пуст. А значит тебе как то требуется проверить что он не пуст)

наверное можно попробовать как-то так. чтобы убедиться что проблема не там где ты ее ищешь.

{% set operations = operations or [{'id': 'NOT ID', 'state': 'NOT STATE', 'date': 'NOT DATE'}] %}

или выведи себе operation до set data, чтобы убедиться что у тебя operations это действительно список словарей. а не словарь, потому что словарь это тоже итерабельный объект.

→ Ссылка