使用JSONResponse序列化Django 1.7中的QuerySet? [英] Use JSONResponse to serialize a QuerySet in Django 1.7?

查看:801
本文介绍了使用JSONResponse序列化Django 1.7中的QuerySet?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我现在看到,在Django 1.7中,我可以使用 http.JSONResponse 对象将JSON发送给客户端。我的观点是:

  #Ajax 
def get_chat(request):
usuario = request.GET。 get('usuario_consultor',None)
usuario_chat = request.GET.get('usuario_chat',None)

mensajes = list(MensajeDirecto.objects.filter(Q(usuario_remitente = usuario, usuario_destinatario = usuario_chat)| Q(usuario_remitente = usuario_chat,usuario_destinatario = usuario))


返回JsonResponse(mensajes,safe = False)
/ pre>

但是我收到下一个错误:


< MensajeDirecto: Towi CrisTowi>不是JSON可序列化


你知道如何序列化一个QuerySet以JSON格式发回?

解决方案

  from django.core import serializers 
from django.http import JsonResponse

def get_chat(request):
usuario = request.GET.get('usuario_consultor',None)
usuario_chat = re quest.GET.get('usuario_chat',无)

mensajes = MensajeDirecto.objects.filter(Q(usuario_remitente = usuario,usuario_destinatario = usuario_chat)| Q(usuario_remitente = usuario_chat,usuario_destinatario = usuario))

返回JsonResponse(serializers.serialize('json',mensajes),safe = False)
pre>

参考:
https://docs.djangoproject.com/en/dev/ref/request-response/#jsonresponse-objects
https://docs.djangoproject.com/en/1.7/topics/serialization/


I saw that now in Django 1.7 I can use the http.JSONResponse object to send JSON to a client. My View is:

#Ajax
def get_chat(request):
    usuario = request.GET.get('usuario_consultor', None)
    usuario_chat = request.GET.get('usuario_chat', None)

    mensajes = list(MensajeDirecto.objects.filter(Q(usuario_remitente = usuario, usuario_destinatario = usuario_chat) | Q(usuario_remitente = usuario_chat, usuario_destinatario = usuario)))


    return JsonResponse(mensajes, safe=False)

But I get the next error:

<MensajeDirecto: Towi CrisTowi> is not JSON serializable`

Do you know how to serialize a QuerySet to send it back in JSON form?

解决方案

from django.core import serializers
from django.http import JsonResponse

def get_chat(request):
    usuario = request.GET.get('usuario_consultor', None)
    usuario_chat = request.GET.get('usuario_chat', None)

    mensajes = MensajeDirecto.objects.filter(Q(usuario_remitente = usuario, usuario_destinatario = usuario_chat) | Q(usuario_remitente = usuario_chat, usuario_destinatario = usuario))

    return JsonResponse(serializers.serialize('json', mensajes), safe=False)

Ref: https://docs.djangoproject.com/en/dev/ref/request-response/#jsonresponse-objects https://docs.djangoproject.com/en/1.7/topics/serialization/

这篇关于使用JSONResponse序列化Django 1.7中的QuerySet?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆