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 可序列化的'