Попытка сопоставить заголовки таблиц шаблона Django со значениями в столбцах, когда значения ячеек отсутствуют

У меня есть модель игрока, модель события и модель пика. Теоретически, игрок должен отправлять пик для каждого события, но это происходит не всегда, и могут быть случаи, когда пик еще не отправлен, но будет отправлен в следующие дни.

У меня есть таблица, в которой отображается выбор каждого игрока для каждого события. Строка заголовка таблицы циклически перебирает события, затем у меня есть regroup и циклически перебирает все "Подборки игроков" для каждой строки таблицы.

Ниже показано, как я хотел бы, чтобы это работало. Когда Pick отсутствует, не выводите значение Pick, а пропускаете эту ячейку (или показываете игроку полезное сообщение):

enter image description here

Мой шаблон вставлен ниже, но когда Pick отсутствует, в наборе запросов не хватает элементов, чтобы соответствовать количеству заголовков таблицы, и поскольку язык шаблонов намеренно немного наивен (т.е. я не могу разорвать цикл или сделать некоторые другие функции), мне трудно придумать, как организовать этот шаблон так, чтобы добавилась пустая ячейка таблицы.

Вот на что похожа моя таблица - пики игрока 2 не выровнены. Оранжевые ячейки не совпадают с заголовком События, а последняя красная ячейка пуста, так как в цикле нет такого же количества подборов, как и Событий:

enter image description here

Вот код моего шаблона. У меня есть комментарии рядом со строками, которые важны:

<!-- Regroup picks by player -->
{% regroup league_picks by player as player_picks %}

<h1>Picks are {{ picks_locked|yesno:'Locked,Unlocked' }}</h1>

<table class="result-table">
    <thead>
        <tr>
            <th class="player">Player</th>
            <th>Wins</th>
        {% for event in events %}
            {% if event.current_status.status.type.state != 'pre' %}
            <th class="live-score">
                {% with home=event.current_status.competitions.0.competitors.0 away=event.current_status.competitions.0.competitors.1 %}
                    <span>{{away.team.abbreviation}} {{away.score}}</span>
                    <br>
                    <span>{{home.team.abbreviation}} {{home.score}}</span>
                    <br>
                    <span>{{event.current_status.status.type.shortDetail}}</span>
                {% endwith %}
            </th>
            {% else %}
            <th>{{event.short_name}}</th>
            {% endif %}
        {% endfor %}
        </tr>
    </thead>
    <tbody>
        {% for player, picks in player_picks %}
            <tr>
                <td class="player">
                    {% if events|length == picks|length %}
                    <span class="picks-completed">
                    {% else %}
                    <span class="picks-not-completed">
                    {% endif %}
                    {{player}}
                    </span>
                </td>
                <td>{% player_wins_by_week season week player %}</td>

<!-- Looping through picks -->
                {% for pick in picks %}
<!-- I could loop events also, and use pick.event.id == pick.id, but I can't break the loop -->                    
                    {% if pick.result == 'WIN' %}
                        <td class="win">{{pick.pick_team.short_name}}</td>
                    {% elif pick.result == 'LOSS' %}
                        <td class="loss">{{pick.pick_team.short_name}}</td>
                    {% else %}
                        {% if picks_locked %}
                            <td class="{% if pick|pick_status == pick.pick_team.id %}winning{% endif %}">{{pick.pick_team.short_name}}</td>
                        {% else %}
                            <td>{{pick.event.status}}</td>
                        {% endif %}
                    {% endif %}
                {% endfor %}
            </tr>
        {% endfor %}
    </tbody>
</table>
Вернуться на верх