Сериализация экземпляров модели Django (наборы запросов с тегом values) - PullRequest
0 голосов
/ 12 ноября 2010

Я пытаюсь сериализовать следующий вид

def headerimage(request):

service_view = list( Service_images.objects.filter(service='7'))


return render_to_response ('headerimage.html',{'service_view':service_view}, context_instance=RequestContext(request))

Это должно вернуть JSON в форме, показанной ниже

{"folderList":
    ["with schmurps"],
 "fileList":
    ["toto006.jpg",
     "toto012.jpg",
     "toto013.jpg"
    ]
}

Однако список папок может быть один или в этом случае будет «7», учитывая, что это заголовок («папка») изображений.

После учета ответа ниже я придумал

def headerimage(request):

service_view =  Service_images.objects.filter(service='7')
image = serializers.serialize("json", service_view)

mini = list(serializers.deserialize("json", image))


return HttpResponse(image, mimetype='application/javascript')

однако, я все еще ищу самый простой способ сделать это

service_view =  Service_images.objects.filter(service='7').values('image')

Проблема в том, что сериализатор django ожидает целые модели

Ответы [ 2 ]

1 голос
/ 12 ноября 2010

Service_images.objects.filter () вернет вам объект QuerySet, так что в основном перенос этого в list () бессмыслен ...

Посмотрите на документы: http://docs.djangoproject.com/en/dev/topics/serialization/#id2, и используйте LazyEncoder, определенный там.

0 голосов
/ 02 февраля 2012

Обычно я следую приведенному ниже пути, когда требование формата json не соответствует представлению моей модели.

from django.utils import simplejson as json

def headerimage(request):

    service_view =  Service_images.objects.filter(service='7')

    ret_dict = {
       "folderList":
          [sv.image.folder for sv in service_view],
       "fileList":
          [sv.image.file for sv in service_view]
    }
    return (json.dumps(ret_dict), mimetype="application/json")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...