在嵌套for循环中设置计数器

时间:2012-08-28 21:44:47

标签: django for-loop counter

我正在使用django构建一个电子商务网站,我正在处理列出所有订单的页面。我想设置一个计数器,将订单从1编号为任何数字。但是,如果我设置一个for循环来执行此操作,那么每次跳回到原始的forloop时,数字是否会重置?

现在我正在使用主键对所有订单进行编号,但我想将其更改为1-whatever。 enter image description here

<!DOCTYPE html>
<html>
<body>

Order page

{% for location, orders in orderlocations.items %}
    <table>
        <tr>
            <td>#</td>
            <td>Time</td>
            <td>Location</td>
            <td>Name</td>
            <td>Email</td>
            <td>Phone</td>
            <td>Order</td>
            <td>Order Quantity</td>
            <td>Delivered</td>

        </tr>

        {% for ord in orders %}
            {% for food in ord.orderitem_set.all %}

            <tr>
                {% if forloop.counter == 1 %}
                    <td>{{ord.pk}}</td>
                    <td>{{ord.time}}</td>
                    <td>{{ord.location}}</td>
                    <td>{{ord.user.first_name}}</td>
                    <td>{{ord.user.email}}</td>
                    <td>{{ord.user.get_profile.phone}}</td>

                {% else %}
                    <td colspan="4"></td>
                {% endif %}

                    <td>{{food.name}}</td>
                    <td>{{food.quantity}}</td>

                <td>
                    {% if forloop.counter == 1 %} 
                        <form action="" method="POST">
                            <input type="hidden" name="order-id" value="{{ ord.pk }}"/>
                            <input type="hidden" name="action=" value="toggledelivery"/>
                            <button type="button">{% if not ord.delivered %}Not {% endif %}Delivered</button>
                        </form>
                    {% endif %}        
                </td>
            </tr>
            {% endfor %}
        {% endfor %}

    </table>  

{% endfor %}

</body>
</html>  

1 个答案:

答案 0 :(得分:3)

而不是<td>{{ord.pk}}</td>使用<td>{{ forloop.counter }}</td>

for循环每个都有自己的范围。如果你想要外环的计数器,你可以使用forloop.parentloop.counter

Django For-Loops