Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 5, 2013 11:51:05

MikaMika
Зарегистрирован: 2012-11-07
Сообщения: 51
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблема с JsonField из пакета django-annoying.

Привет.
Всё просто, есть модель:

class Page(models.Model):
    data = JSONField(blank=True, null=True)
Сохраняю и пытаюсь вывести словарь:
page = Page.objects.get(pk=5)
page.data = {'title': 'test', 'type': 3}
page.save()
page.data
>>> u"{'title': 'test', 'type': 3} "
>>> page.data.get('title')
>>> AttributeError: 'unicode' object has no attribute 'get'
Как привести строку (u“{'title': ‘test’, ‘type’: 3} ”) возвращаемую json к нормальному виду, что бы получить искомый словарь?
В шаблонах, словарь выдаётся как строка, а не как объект.
Как можно получить словарь, а не строку?

Отредактировано MikaMika (Апрель 5, 2013 11:57:03)

Офлайн

#2 Апрель 5, 2013 17:21:04

slav0nic
Команда
От: dp.ua
Зарегистрирован: 2006-05-07
Сообщения: 2260
Репутация: +  41  -
Профиль   Отправить e-mail  

Проблема с JsonField из пакета django-annoying.

а если с базы по новой перечитать? get(pk=5) типа
у тебя в data строка вернулась, а должно было десериализировать json в словарь

Отредактировано slav0nic (Апрель 5, 2013 17:22:47)

Офлайн

#3 Апрель 5, 2013 19:35:13

MikaMika
Зарегистрирован: 2012-11-07
Сообщения: 51
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблема с JsonField из пакета django-annoying.

slav0nic
а если с базы по новой перечитать? get(pk=5) типау тебя в data строка вернулась, а должно было десериализировать json в словарь
Я пробовал из консоли.
Выбирал запись и получал следующее:
>>> u"{'title': 'test', 'type': 3}"
Строку юникода.

Офлайн

#4 Апрель 10, 2013 08:24:42

MikaMika
Зарегистрирован: 2012-11-07
Сообщения: 51
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблема с JsonField из пакета django-annoying.

Проблема была в кавычках.
dict Json != dict Python.
Везде нужные двойные кавычки.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version