Как я могу быстро вывести набор результатов запроса в JSON? - PullRequest
2 голосов
/ 12 января 2011
import simplejson as json
results = Content.objects.filter(blah)
theresult_json = json.dumps(results)

Это не работает !!

Ответы [ 3 ]

6 голосов
/ 12 января 2011

Как насчет http://docs.djangoproject.com/en/dev/topics/serialization/

?

from django.core import serializers
data = serializers.serialize('json', SomeModel.objects.all())

# it's pretty useful and quick.
data = serializers.serialize('json', SomeModel.objects.all(), fields=('foo','bar'))
1 голос
/ 12 января 2011

results - это объект Python. simplejson.dumps работает только на python dict's / list.

Сначала вам нужно преобразовать объект результатов в диктовку. Либо вы делаете это вручную, как это:

l = [] 

for result in results:
    d = {
        'attr1': result.attr1,
        'attr2': result.attr2,
        ...
    }
    l.append(d)

theresult_json = simplejson.dumps(l)

или динамически с методом __dict__ объектов, удаляя из него не сериализуемые атрибуты JSON:

l = [] 

for result in results:
    d = result.__dict__
    # remove attributes from dict which are not JSON-serializable with del d[key]
    l.append(d)

theresult_json = simplejson.dumps(l)
0 голосов
/ 12 января 2011

В зависимости от того, что вы пытаетесь сделать, вы также можете проверить Поршень . У него есть специальные классы Emitter для вывода ваших объектов в формат JSON, XML и т. Д. ... если вы создаете конечные точки AJAX или API, структура поршня невероятно полезна.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...