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 %}
Вернуться на верх