0

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

现在我使用主键对所有订单进行编号,但我想将其更改为从 1 开始。 在此处输入图像描述

<!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>  
4

1 回答 1

3

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

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

Django For 循环

于 2012-08-28T22:01:51.843 回答