Динамическая таблица — это Flask и Jinga2, вложенные для циклов

#python #flask #jinja2

#python #flask #jinja2

Вопрос:

Я пытаюсь создать динамическую таблицу в Flask с помощью jinja2. У меня есть таблица employee, таблица навыков и таблица skills_a (это ассоциативная таблица с идентификатором employee и идентификатором навыков).

Ожидаемый результат

 Employee   | Skill 1 | Skill 2 | Skill 3
Employee 1     X          X        X
Employee 2                X        X
Employee 3     X                   X
Employee 4                         X 
  

Что я получаю прямо сейчас, так это

     Employee   | Skill 1 | Skill 2 | Skill 3
    Employee 1     X          X        X
    Employee 2     X          X    
    Employee 3     X     
    Employee 4     X
 
  

Любые идеи о том, как правильно организовать это с пробелом, если у сотрудника нет такого навыка, были бы замечательными.

 <table id="example" class="table table-striped table-bordered" style="width:100%">
      <thead>
        <tr>
          <th>Employee</th>
          {% for skill in skills %}
            <th>{{skill.description}}</th>
        {% endfor %}
        </tr>
      </thead>
      <tbody>
        {% for emp in employee %}
        <tr>
            <td><a href="/emp/edit/{{ assoc.id }}"> {{ emp.last_name }}, {{emp.first_name}} </a></td>
            {% for s in skills_a if emp.id == s.emp_id%}
                {% for skil in skills %}
                    {% if skil.id == s.skill_id %}
                        <td>{{ s.skill_id }}</td>
                        {% continue%}
                    {% endif %}
                {% endfor %}
            {% endfor %}
        </tr>
        {% endfor %}
    </table>
  

Комментарии:

1. Подумайте, как вы могли бы организовать выдачу <td></td> пары для представления отсутствия навыков.

2. Я пытался использовать операторы else с <td></td> в нем, что в итоге происходит, так это то, что у меня слишком много пробелов в строке. Например, если у меня есть 2 навыка, я получаю 2 пробела в строке между первым навыком и вторым навыком, потому что он все еще проходит через внутренний цикл.