0

我正在创建一个电子商务网站,我想构建一个页面,我可以在其中查看创建的所有订单的列表。

如果订单仅包含一种类型的项目,则格式可以正常工作,但是当订购了多种类型的项目时,我想不出一种构建表格的方法。

这是订购 2 件商品时的样子(最后一个条目):

在此处输入图像描述

我希望 #18 的“Queso Burrito”位于“牛排和鸡蛋卷饼”的正下​​方。

这是我的代码:

<table>
    <tr>
        <td>#</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 %}
    <tr>
        <td>{{ord.pk}}</td>
        <td>{{ord.user.first_name}}</td>
        <td>{{ord.user.email}}</td>
        <td>{{ord.user.get_profile.phone}}</td>

        {% for food in ord.orderitem_set.all %}
            <td>{{food.name}}</td>
            <td>{{food.quantity}}</td>
        {% endfor %}

        <td>x</td>
    </tr>
    {% endfor %}

</table>   
4

1 回答 1

2

对于多个项目,您通常会看到包含针对每个行项目重复的订单数据的表格。

{% for order in orders %}
{% for orderitem in order.items %}
<td>{{order.id}}</td><td>...</td>
{% endfor %}
{% endfor %}

如果您想要完全符合您描述的格式,您可以检查内部循环是否超过其第一项并隐藏您不想重复的字段。

<table>
    {% for ord in orders %}
        {% for item in ord.orderitem_set.all %}
        <tr> 
            {% if forloop.counter == 1 %}
                <td>{{ord.pk}}</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>{{item.name}}</td>
            <td>{{item.quantity}}</td>
            <td>{% if forloop.counter == 1 %}x{% endif %}</td>
        </tr>
        {% endfor %}
    {% endfor %}

</table>   
于 2012-08-27T21:55:22.260 回答