清单FOR中的Django模板IF

罗杰里奥·冈萨雷斯(Rogelio Gonzalez)

我正在尝试在FOR LOOP的IF结构中使用清单中的对象,但是当我尝试比较带有字符串的对象(即“ TRUE”)时,我无法进入IF的True情况行内结构体。

示例:当equipo.Department =“ Equipo”时,我不知道为什么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 %}

威廉·范昂塞姆

一个Department与对象'Equipo'的名称是一样的字符串' Equipo',所以检查本身是假的。如果稍后渲染 {{ equipo.Department }},那么Django将str(..)在该结果上调用方法,因此它将确实渲染部门的名称。

因此,您应该使用以下命令检查等效性:

{% if equipo.Department.name == 'Equipo' %}
    <!-- … -->
{% endif %}

话虽这么说,而不是在模板中进行过滤,您最好应该在数据库端进行过滤,因此通常最好尝试避免检索equipo不属于所需部门的数据。

您可以使用以下示例进行过滤:

SomeModel.objects.filter(Department__name='Equipo')

注意:Django具有{% for … %}…{% empty %}模板标签[Django-doc],如果您迭代的集合为空,则可用于呈现消息。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章