Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python “转换字符串”;列表“;对一个物体_Python_Django - Fatal编程技术网

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()中。现在我需要在模板中迭代它

更新我正在更新我的答案。但是你应该把你的问题写清楚。在您的问题中,您甚至不尝试将其显示为
字符串。乍一看,它就像一个
列表

您可以使用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 %}

这不是持久化对象的好方法。尝试使用模型类保存它们。

不要这样做。使用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)