我正在尝试在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] 删除。
我来说两句