Преобразовать строку «список» в объект - PullRequest
0 голосов
/ 20 сентября 2011

Как бы вы преобразовали это в объект, который вы можете перебрать

[{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.Теперь мне нужно повторить это в шаблоне.

Ответы [ 3 ]

2 голосов
/ 20 сентября 2011

Не делай этого. Используйте JSONField - пример реализации см. здесь - и сохраняйте содержимое как допустимый JSON, а не как строковый dict.

1 голос
/ 20 сентября 2011
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 голосов
/ 20 сентября 2011

Обновление Я обновляю свой ответ. Но Вы должны четко написать свой вопрос. В своем вопросе вы даже не пытаетесь показать это как strings. На первый взгляд это выглядит как list.

Вы можете использовать http://docs.python.org/dev/library/ast.html python ast module.

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 %}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...