0

私はeコマースWebサイトを作成していて、作成されたすべての注文のリストを表示できるページを作成したいと思いました。

注文に1種類のアイテムしか含まれていない場合、形式は正しく機能しますが、複数の種類のアイテムが注文されている場合にテーブルを作成する方法を考えることはできません。

2つのアイテムが注文された場合(最後のエントリ)は次のようになります。

ここに画像の説明を入力してください

#18の「ステーキと卵のブリトー」の真下に「ケソブリトー」を入れて欲しいです。

これは私のコードです:

<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 に答える