我无法在从views.py生成的嵌套字典中迭代(键和值)
context ={ " orders_current ":orders_current}
使用
返回orders_current (request,"orders/cart.html",上下文)是views.py中查询的结果
orders_current = Orders.objects.values('def','abc','toppings')
“‘toppings”作为JSON数据存储在数据库中,但在类方法中转换(加载)回字典:
def __str__(自)
在models.py.我这样做是因为我在某个地方阅读--这是将字典存储在postgresql中的一种推荐方法。
请注意,orders_current有多个嵌套字典,例如:
< QuerySet {“类别_名称”:“常规比萨”、“大小”:“小”、“项目名称”:“奶酪”、“商品价格”:十进制(“12.70”)、“toppings_selected”:True、“toppings”:{“蘑菇”:1.5、“加拿大培根”:1.5}
传递给html的字典{{ order.toppings },cart.html显示为值(逐字表示),例如:
{“蘑菇”:1.5,“加拿大培根”:1.5}
因此,我最近从字典中提取顶级名称和相应的价格(键、值)的尝试是:
{% for order in orders_current %}
...
<table>
{% for name, price in order.toppings.items %}
<tr>
<td>{{ name }}:</td>
<td>${{ price }}</td>
</tr>
{% endfor %}
</table>
我从这个代码片段中没有得到任何值(名称、价格)。基于我的网络搜索,我尝试了上述几乎所有的变体,并以不同的方式设置上下文进行传输。任何帮助都将不胜感激。
发布于 2020-06-02 20:52:17
根据您的查询集:
< QuerySet [{'category_name': 'Regular Pizza', 'size': 'small', 'item_name': 'Cheese', 'item_price': Decimal('12.70'), 'toppings_selected': True, 'toppings': '{"Mushrooms": 1.5, "Canadian Bacon": 1.5}'}] >
order.toppings是一个字符串,尝试将其转换为视图:中的字典。
import ast
for order in orders_current:
order["toppings"] = ast.literal_eval(order["toppings"])
下面是将字符串字典转换为字典的不同方法。https://www.geeksforgeeks.org/python-convert-string-dictionary-to-dictionary/
转换它之后,它应该在模板中工作。
https://stackoverflow.com/questions/62165187
复制相似问题