[英]How to iterate Data in python-django
我有以下數據:
[{
'mp': [ < MpbMealPlan: MpbMealPlan object > , < MpbMealPlan: MpbMealPlan object > ],
'user': [ < User: mpowner mpowner > ]
}, {
'mp': [ < MpbMealPlan: MpbMealPlan object > , < MpbMealPlan: MpbMealPlan object > ],
'user': [ < User: kvermaOwner Owner > ]
}]
我想在我的Django模板中進行迭代。 如圖所示,這是兩個記錄,每個記錄都有2個鍵(mp和user),每個記錄都屬於特定用戶。 因此,我對它有所了解,以便獲得用戶的MP和用戶的詳細信息。 但是,當我嘗試按照下面的答案或任何其他答案中所述進行迭代時,每次得到奇怪的結果。 mp可以包含更多條記錄,但是我只停留在第一次迭代中。 我對python非常陌生,這是我工作的第三天。 任何指導都會挽救我的生活。
一旦我在下面申請:
{% for contributor in contributors.details %}
{{ contributor }}
{% endfor %}
我得到了分解結構的輸出:
{
'mp': [ < MpbMealPlan: MpbMealPlan object > , < MpbMealPlan: MpbMealPlan object > ],
'user': [ < User: mpowner mpowner > ]
} {
'mp': [ < MpbMealPlan: MpbMealPlan object > , < MpbMealPlan: MpbMealPlan object > ],
'user': [ < User: kvermaOwner Owner > ]
}
一個查詢:是否有可能從我的數據中獲得預期的結果。 我想對其進行迭代以獲取mp和用戶,然后對mp進行迭代以獲取其中的多個記錄。 正如每次嘗試迭代到任何級別時,我都會獲得所有記錄,因此鍵“ mp和user”不能解決我的目的。
我不想在這里浪費任何時間。 我已經更新了問題。 到目前為止,感謝您的回答。 更新:
以下是我使用的方法並獲得了預期的結果:
{% for contributor in contributors.details %}
{% for user in contributor.user %}
{{ user }}
<br>
{% for mp in contributor.mp %}
{{ mp.mp_name }}
<br>
{% endfor %}
{% endfor %}
{% endfor %}
結果:
user:mpowner mpowner
mp:Fresh & Healthy
mp:evening snacks
user:kvermaOwner Owner
mp:Fresh & Healthy
mp:Energizing
最后,我在C14L的幫助下獲得了理想的輸出(驚人的指導)。 多虧了“ ajabdelaziz”和其他人。
對於Python3,調用.items()
會為您提供項目。
for key, item in data.items():
對於Python2,請使用iteritems()
:
for k, v in knights.iteritems():
在Django模板中:
<div>
{% for k,v in test.items %}
<p>{{ k }} --> {{ v }}</p>
{% endfor %}
</div>
文件: https : //docs.python.org/3/tutorial/datastructures.html#looping-techniques
編輯:
要添加答案,請查看您的特定對象
[('details', [{
'mp': u '[{"fields": {"status":
看這部分:'mp': u' [{“ fields”:{“ st
那不是 list()
,而是一個字符串: u''
當您循環一個字符串時,您將得到字符串包含的單個字符,一個接一個。 因此,“奇怪”的結果。
編輯2:
contributor.mp
和contributor.user
都包含列表
{% for contributor in contributors.details %}
{{ contributor.mp }}
{{ contributor.user }}
{% endfor %}
因此,例如打印所有用戶名,您可以
{% for contributor in contributors.details %}
{% for user in contributor.user %}
{{ user.username }}
{% endfor %}
{% endfor %}
要打印mp
項目列表,您可以執行
{% for contributor in contributors.details %}
{% for mp in contributor.mp %}
{{ mp }}
{% endfor %}
{% endfor %}
但是每個mp
對象可能都有許多屬性。 您需要查詢您的MpbMealPlan
類定義。
根據您的錯誤,從我所看到的是,您正在嘗試遍歷mp,后者具有包含字典和列表的值。 由於數據類型不同,您不能僅使用.items()
。 您需要使用.items()
來獲取mp在key,value中的值。 那么您將不得不處理遍歷列表,然后遍歷鍵值的問題。 C14L的答案顯示了如何在模板中做到這一點,只是不要忘記您的數據類型!
即-
<div>
{% for k,v in test.items %}
{% for item in v%}
{% item %}
{% endfor %}
{% endfor %}
</div>
item將是您可以迭代以獲取其他鍵值對的列表。
另一種可能的解決方案是在模板標簽過濾器中執行大多數操作。 然后將過濾器應用於要過濾掉的所選變量。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.