Django шаблон для цикла, если для определенного имени хоста ничего не найдено, создается пустая ячейка
Я объединяю несколько выходов из моделей в одну таблицу. Поэтому я ищу hostname_id, который связывает модели вместе, а затем отображаю вывод. Проблема в том, что может не быть данных для отображения, что нарушает выравнивание таблицы, поэтому мне нужно создать пустые ячейки.
{% for y in cpuAverageReport %}
{% if x.id == y.hostName_id %}
<td>{{ y.average | floatformat:0}}%</td>
<td>{{ y.maximum | floatformat:0}}%</td>
{% endif %}
{% endfor %}
Итак, если в конце цикла аргумент if никогда не совпадает, я хочу создать две пустые ячейки. Я пробовал использовать {% with var="something" %}, чтобы отметить, когда аргумент if совпадает, но тег {% endwith %} должен быть перед тегом endif, что делает его бесполезным...
Я бы сказал, что нужно выяснить, есть ли совпадения в представлении, а затем передать их в шаблон. Из того, что я читал, шаблон не должен обрабатывать такие вещи, и это должно быть в представлении
.
Я изучил теги шаблонов, но в конечном итоге это не сильно отличается от того, чтобы выяснить это в представлении и передать в шаблон
Как и вы, я рассмотрел возможность использования with
, но, к сожалению, это невозможно, так как вы не можете изменить значения with
:( облом!
Наконец, вы можете сделать JavaScript onload
: check if table has rows, if not: create one
это сомнительно с точки зрения стиля, но это будет работать.
Можно ли просто добавить {% else %}
с пустыми ячейками в конец оператора {% if %}
?
{% for y in cpuAverageReport %}
{% if x.id == y.hostName_id %}
<td>{{ y.average | floatformat:0}}%</td>
<td>{{ y.maximum | floatformat:0}}%</td>
{% else %}
<td></td>
<td></td>
{% endif %}
{% endfor %}