Django Шаблон ЕСЛИ в листинге ДЛЯ - PullRequest
1 голос
/ 06 мая 2020

Я пытаюсь использовать объект из списка в структуре IF внутри FOR L OOP, но когда я пытаюсь сравнить объект со строкой (то есть «ИСТИНА»), я не могу go внутри строк случая True структуры IF.

Пример: когда equipo.Department = "Equipo", я не знаю, почему IF ({% if equipo.Department == 'Equipo'%}) не является рабочий.

Код:

{% autoescape off %}

{% if equipos %}
{% for equipo in equipos %}
<tr></tr>
    <td>{% if equipo.Department == 'Equipo' %}
        E
        {% else %}{{ equipo.Department }}{% endif %}-{{ equipo.Equipment_id }}</td>
    <td>{{ equipo.Name }}</td>
    <td>{{ equipo.Description }}</td>
    <td>{{ equipo.SerialNo }}</td>
    <td>{{ equipo.Vendor }}</td>
    <td>{{ equipo.Tag }}</td>
    <td>{{ equipo.OutOfService }}</td>
    <td>{{ equipo.Location }}</td>
    <td>{{ equipo.Plan }}</td>
    <td>{{ equipo.ManualPath }}</td>
    <td>{{ equipo.ImagePath }}</td>
</tr>
{% endfor %}
{% else %}
<h1>No existen registros</h1>
{% endif %}
{% endautoescape %}

1 Ответ

0 голосов
/ 07 мая 2020

Объект Department с 'Equipo' в качестве имени не совпадает со строкой 'Equipo', поэтому сама проверка ложна. Если позже вы отобразите {{ equipo.Department }}, то Django вызовет метод str(..) для этого результата, и, таким образом, он действительно отобразит имя отдела.

Таким образом, вы должны проверить эквивалентность с помощью:

{% if <b>equipo.Department.name == 'Equipo'</b> %}
    <!-- &hellip; -->
{% endif %}

При этом вместо фильтрации в шаблоне вам лучше фильтровать в конце базы данных, поэтому обычно лучше попробовать избегайте получения equipo, не относящегося к требуемому отделу.

Вы можете фильтровать, например, с помощью:

SomeModel.objects.filter(<b>Department__name='Equipo'</b>)

Примечание : Django имеет тег шаблона {% for &hellip; %}&hellip;{% empty %} [Django -doc] , который можно использовать для отображения сообщения, если коллекция, которую вы перебираете, пуста.

...