Сериализаторы JSON не работают в Django - PullRequest
2 голосов
/ 23 февраля 2010

Хей, сериализаторы не возвращают объект JSON

    make = Make.objects.filter(slug__exact=make)
    models = Model.objects.filter(make=make).values('slug','name')

    json_models = serializers.get_serializer("json")()
    json_models.serialize(models)

    return HttpResponse(json_models.getvalue())

Я получаю сообщение об ошибке

'dict' object has no attribute '_meta'

Есть идеи?

Ответы [ 2 ]

4 голосов
/ 23 февраля 2010

Как подсказывает другой ответ, это потому, что .values(...) возвращает список, а serializers предназначен для Querysets. Однако вы все равно можете сделать это без необходимости использовать простой SimpleJSON:

queryset = Model.objects.filter(make__slug__exact=make)
return serializers.serialize("json", queryset, fields=('slug', 'name'))

Мы в основном говорим сериализатору делать ограничение поля вместо того, чтобы позволить Queryset делать это. Я использовал несколько ярлыков, чтобы сократить запрос до одной строки, но это зависит от вас.

2 голосов
/ 23 февраля 2010

Сериализатор предназначен для использования в QuerySet экземплярах. Используйте django.utils.simplejson.dumps(), если у вас нормальная структура Python.

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