我在Django 2.0中有一个应用程序,我在其中使用带有ajax函数的模板,我希望从中获取过滤器的结果,但它会生成以下错误:
TypeError: <QuerySet [<Curso: Curso object (1)>, <Curso: Curso object (2)>, <Curso: Curso object (3)>]> is not JSON serializable
Views.py
def activaAjax(request):
curso = Curso.objects.filter(pk = request.GET['id'])
cursos = Curso.objects.all()
try:
curso.update(estado=Case(When(estado=True, then=Value(False)),When(estado=False, then=Value(True))))
mensaje = "Proceso de ACTIVACIÓN/INACTIVACIÓN correcto!!!"
data = {'mensaje': mensaje, 'cursos':cursos}
return HttpResponse(json.dumps(data), content_type="application/json")
except:
return HttpResponse(json.dumps({"mensaje":"Error"}), content_type='application/json', status = 500)
return HttpResponse(json.dumps({"mensaje":"Error"}), content_type='application/json')
答案 0 :(得分:0)
json.dumps()无法直接在json中转储Queryset 要么你应该写queryset.values_list('field1',flat = True) 或者如果你想从对象中获得多于1个字段,你应该编写queryset.values_list('field1','field2',..) 将它转移到列表列表(queryset.values_list('field1','field2',..)) 并将其作为
传递给您的数据data = { 'corsos' : list(queryset.values_list('field1','field2',..)) }
2)或者你也可以
from django.core import serializers
serialized_qs = serializers.serialize('json', queryset)
data = {"queryset" : serialized_qs}
return JsonResponse(data)