如何将此转换为可以迭代的对象
[{u'pk': u'1', u'quantity': u'2', u'name': u'3mm aliminum sheet', u'size': u'300x322'},{u'pk': u'2', u'quantity': u'1', u'name': u'2mm aliminum sheet', u'size': u'300x322'}]
此数据保存在我的Django模型中的CharField()中。现在我需要在模板中迭代它。
答案 0 :(得分:2)
不要那样做。使用JSONField - 有关示例实现,请参阅here - 并将内容存储为有效的JSON,而不是字符串化的字典。
答案 1 :(得分:1)
s = "[{u'pk': u'1', u'quantity': u'2', u'name': u'3mm aliminum sheet', u'size': u'300x322'},{u'pk': u'2', u'quantity': u'1', u'name': u'2mm aliminum sheet', u'size': u'300x322'}]"
d = eval(s)
print type(d)
这不是持久化对象的好方法。尝试使用模型类保存它们。
答案 2 :(得分:0)
更新我正在更新我的回答。但你应该清楚地写下你的问题。在您的问题中,您甚至不会尝试将其显示为strings
。首先看它看起来像list
。
您可以使用http://docs.python.org/dev/library/ast.html python ast
模块。
In [12]: import ast
In [13]: s = "[{u'pk': u'1', u'quantity': u'2', u'name': u'3mm aliminum sheet', u'size': u'300x322'},{u'pk': u'2', u'quantity': u'1', u'name': u'2mm aliminum sheet', u'size': u'300x322'}]"
In [14]: result = ast.literal_eval(s)
In [15]: result
Out[15]:
[{u'name': u'3mm aliminum sheet',
u'pk': u'1',
u'quantity': u'2',
u'size': u'300x322'},
{u'name': u'2mm aliminum sheet',
u'pk': u'2',
u'quantity': u'1',
u'size': u'300x322'}]
In [16]: result[0].get('name')
Out[16]: u'3mm aliminum sheet'
现在您可以将此新结果值发送到模板。
{% for r in result.0 %}
{{ r.name }}
{% endif %}