QuerySet 类型的对象不是 JSON 可序列化的 Django

Posted

技术标签:

【中文标题】QuerySet 类型的对象不是 JSON 可序列化的 Django【英文标题】:Object of type QuerySet is not JSON serializable Django 【发布时间】:2020-03-04 01:11:27 【问题描述】:

当我尝试在 JsonResponse 中发送值时,错误来了(QuerySet 类型的对象不是 JSON 可序列化的)

def ajaxAgent(request):
    data = CommCenter.objects.values()
    responseData =  'status': 'success', 'msg' : data
    return JsonResponse(responseData)

【问题讨论】:

这能回答你的问题吗? Output Django queryset as JSON 【参考方案1】:

请找here答案:

from django.http import JsonResponse

def some_view(request):
    data = list(SomeModel.objects.values())
    return JsonResponse(data, safe=False)  # or JsonResponse('data': data)

【讨论】:

【参考方案2】:

对我有用的是使用values_list() 并使用list 转换为列表

def ajaxAgent(request):
    data = CommCenter.objects.filter().values_list()
    responseData =  'status': 'success', 'msg' : list(data)
    return JsonResponse(responseData)

【讨论】:

【参考方案3】:

当您使用 Django ORM 获取对象时,您必须编写一个模型序列化程序来将对象的值序列化为 JSON 以列表形式返回给您。查看此链接了解更多详情ModelSerializer

【讨论】:

以上是关于QuerySet 类型的对象不是 JSON 可序列化的 Django的主要内容,如果未能解决你的问题,请参考以下文章

“Mycart”类型的对象在 Django 中不是 JSON 可序列化的

Celery EncodeError(TypeError('响应类型的对象不是 JSON 可序列化的'))

Python 错误:TypeError:'Timestamp' 类型的对象不是 JSON 可序列化的'

“AuthToken”类型的对象不是 JSON 可序列化的

Flask API TypeError:“响应”类型的对象不是 JSON 可序列化的

TypeError:mappingproxy 类型的对象不是 JSON 可序列化的