Ошибка Django при сериализации вывода запроса в JSON - PullRequest
0 голосов
/ 27 февраля 2011

Привет! Я пытаюсь использовать Django для создания страницы, которая будет искать в базе данных по определенному ключевому слову. Мне удалось найти в базе данных ключевое слово, но теперь мне нужно сериализовать данные в массив в формате JSON, чтобы яможет использовать его на стороне клиента с помощью JavaScript.

Когда я пытаюсь сериализовать свой массив результатов, я получаю эту ошибку:

У объекта 'dict' нет атрибута '_meta'

Мой код выглядит так:

def SearchItems(request, itemName):
    items_list = list(Item.objects.filter(name = itemName).values())

    json_serializer = serializers.get_serializer("json")()
    data = json_serializer.serialize(items_list, ensure_ascii=False)

    return HttpResponse(data)

Любая помощь будет принята с благодарностью, RayQuang

Ответы [ 2 ]

2 голосов
/ 27 февраля 2011

Вместо использования сериализатора, попробуйте сделать это:

return HttpResponse(simplejson.dumps(items_list),'application/json'))

см. этот ответ для получения дополнительной информации

0 голосов
/ 27 февраля 2011

не конвертируйте объект в диктовку.просто передайте набор запросов в сериализатор:

json_serializer.serialize(Item.objects.filter(name=itemName), ensure_ascii=False)

в качестве альтернативы, вы можете напрямую использовать сериализатор json / cjson / anyjson:

import anyjson
HttpResponse(anyjson.serialize(Item.objects.filter(name=itemName).values()), content_type="application/json")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...