2011-09-20 42 views
-2

你會如何將其轉換爲一個對象,你可以通過將字符串轉換「名單」的一個對象

[{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'}] 

該數據是在CharField()在我的Django模型保存爲上述循環。現在我需要在模板中迭代它。

+0

你應該澄清你的問題,你的列表已經是你可以遍歷的對象。 – tiho

回答

0

更新我更新我的答案。但你應該清楚地寫下你的問題。在你的問題,你甚至不會嘗試將其顯示爲一個strings。在第一次看它看起來像一個list

您可以使用http://docs.python.org/dev/library/ast.html蟒蛇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 %} 
+0

我不能這樣做。它的字符串 – Harry

+0

@哈利你在哪裏提到你這個問題? – Tauquir

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) 

這不是持久對象的好方法。嘗試使用模型類保存它們。

+0

它的工作原理是這樣的 – Harry

2

不要那樣做。使用JSONField - 示例實現見here - 和存儲內容是有效的JSON,而不是一個字符串化的字典。