Jinja中的For循环无法再次使用或如何先移动

时间:2019-11-22 08:06:47

标签: python-3.x flask sqlalchemy jinja2

重用相同的SQLAlchemy结果进行迭代时,它仅在第一次使用时有效。

请参阅下面的内容,我如何获得所有qual.workforce但没有displaynamebusunitcertcount's的所有信息:

    <ul class="empltype">
        {% for qual in allquals %}
<li>{{qual.workforce}}</li>                    
        {% endfor %}
    </ul>
   <ul class="names">
        {% for qual in allquals %}
<li>{{qual.displayname}}</li>                 
        {% endfor %}
    </ul>
    <ul class="busunit">
        {% for qual in allquals %}
<li>{{qual.busunit}}</li>                    
        {% endfor %}
    </ul>

    <ul class="certcount">
        {% for qual in allquals %}
<li>{{qual.certcount}}</li>                    
        {% endfor %}

我想在显示名称,busunit和certcount的3个循环之前使用MoveFirst,以便它们都能正常工作。

我不希望有4个相同变量的副本(allquals1、2、3),即使我知道这是可行的。我猜想jinja渲染引擎只迭代对象一次,是否有办法告诉它每次在循环中使用时都对相同的结果集进行迭代?

enter image description here

1 个答案:

答案 0 :(得分:3)

发生这种情况仅仅是因为结果是一个生成器,并且它的值只能被访问一次。您必须执行allquals = list(query_result)才能对其进行多次迭代