簡體   English   中英

Django模板中的嵌套for循環無法遍歷字典項

[英]Nested for loop in Django Template not able to loop through a dictionary item

我正在嘗試構建的一個小型電子商務項目的一部分。

顯示 order_info 的views.py函數

@login_required
def past_orders_view(request):
    print (request.user)
    allOrders = Order.objects.filter(full_name=request.user)
    return render(request, "orders.html", {'Orders':allOrders})

db 中的allOrders 查詢集如下所示,它將顯示特定登錄用戶的訂單:

<QuerySet[<Order: 13-{'Zenbook 14': '82990.00', 'iPhone 11 64gb': '61999.00'}-godric-+919871199215>]>

在模板中,我有這樣的東西:

<table class="table table-striped">
 <head>
   <tr>
     <th> Ordered Date </th>
     <th> Status </th>
     <th> Product Name </th>
     <th> Price </th>
   </tr>
 </thead>
<tbody>
{% for order in Orders %}
   <tr>
    <td> {{order.date}} </td>
    <td> {{order.status}} </td>
    <td> {{ order.items_json }} </td>
    <td> {{ order.items_json }} </td>
   </tr>
{% endfor %}
</table>

此外,在 view.py 中,訂單的模型對象在下訂單時保存這些信息

order = Order(items_json=items_json, full_name=name, town_or_city=city,                  
              phone_number=phone, status=status, date=timezone.now())
order.save()

因此,諸如full_name、status、date 之類的Order對象可以通過模板中的 for 循環直接訪問,並根據需要在 HTML 中顯示。 有問題的部分是遍歷以產品名稱為鍵,以價格為值的字典。 已經嘗試嵌套 for 循環,無法得到答案。

嘗試循環示例:

{% for order in Orders %}
   <tr>
    {% for key,value in order.items_json.items %}
       <tr>
        <td> {{order.date}} </td>
        <td> {{order.status}} </td>
        <td> {{ key}} </td>
        <td> {{ value }} </td>
      </tr>
   {% endfor %}
  </tr>
{% endfor %}

需要幫助!!!

或者簡單地將這一部分作為您的視圖的一部分並將其傳遞給上下文

如果你想重用此在多個位置,你可以創建一個簡單的自定義模板標簽所規定這里

您的案例示例:

class tuple_to_object:
  def __init__(self, input_tuple):
    self.key = input_tuple[0]
    self.value = input_tuple[1]

def get_key_values(dictionary):
  l = list(dictionary.items())
  return [tuple_to_object(item) for item in l]

...
orders = get_key_values(User.order_set.all()
render(request, 'path/to/view.html', {"orders":orders)})

在你看來:

{% for order in orders %}
  {{order.key}}
  {{order.value}}
{% endfor %}

注意:這不適合您的問題,但方法是相同的

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM