Попытка сопоставить заголовки таблиц шаблона Django со значениями в столбцах, когда значения ячеек отсутствуют
У меня есть модель игрока, модель события и модель пика. Теоретически, игрок должен отправлять пик для каждого события, но это происходит не всегда, и могут быть случаи, когда пик еще не отправлен, но будет отправлен в следующие дни.
У меня есть таблица, в которой отображается выбор каждого игрока для каждого события. Строка заголовка таблицы циклически перебирает события, затем у меня есть regroup
и циклически перебирает все "Подборки игроков" для каждой строки таблицы.
Ниже показано, как я хотел бы, чтобы это работало. Когда Pick отсутствует, не выводите значение Pick, а пропускаете эту ячейку (или показываете игроку полезное сообщение):
Мой шаблон вставлен ниже, но когда Pick отсутствует, в наборе запросов не хватает элементов, чтобы соответствовать количеству заголовков таблицы, и поскольку язык шаблонов намеренно немного наивен (т.е. я не могу разорвать цикл или сделать некоторые другие функции), мне трудно придумать, как организовать этот шаблон так, чтобы добавилась пустая ячейка таблицы.
Вот на что похожа моя таблица - пики игрока 2 не выровнены. Оранжевые ячейки не совпадают с заголовком События, а последняя красная ячейка пуста, так как в цикле нет такого же количества подборов, как и Событий:
Вот код моего шаблона. У меня есть комментарии рядом со строками, которые важны:
<!-- 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>