Python “转换字符串”;列表“;对一个物体
如何将其转换为可以迭代的对象Python “转换字符串”;列表“;对一个物体,python,django,Python,Django,如何将其转换为可以迭代的对象 [{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()中。现在我需要在模板中迭代它 更新我正在更新我的答案。但是你
[{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()中。现在我需要在模板中迭代它 更新我正在更新我的答案。但是你应该把你的问题写清楚。在您的问题中,您甚至不尝试将其显示为
字符串。乍一看,它就像一个列表
您可以使用pythonast
模块
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 %}
这不是持久化对象的好方法。尝试使用模型类保存它们。不要这样做。使用JSONField(示例实现请参见)并将内容存储为有效的JSON,而不是字符串化的命令。您应该澄清您的问题,您的列表已经是可以迭代的对象。@Harry您在问题中在哪里提到过这一点?
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)