Django QuerySet不可序列化

时间:2014-01-15 18:16:34

标签: python ajax django json serialization

我有以下用于拨打Ajax电话的功能:

 30 import json
 31
 32 def get_info(request):
 33    run = Run.objects.values('nvp_build', 'lports', 'lswitch_stt')
 34    measurements = Measurements.objects.values('maxfield')
 35    apistats = APIStats.objects.values('num')
 36    clusterdata = ClusterData.objects.values('memory_usage')
 37 
 38    response_data = json.dumps(run)
 39    return HttpResponse(response_data, mimetype='application/json')

所以当我在views.py中调用该方法时,我得到:

 [{'lports': 4056, 'nvp_build': u'31559', 'lswitch_stt': 2000}, 
     {'lports': 102, 'nvp_build': u'30194', 'lswitch_stt': 40}, 
     {'lports': 4056, 'nvp_build': u'31299', 'lswitch_stt': 2000}, 
     {'lports': 4056, 'nvp_build': u'31350', 'lswitch_stt': 2000}, 
     {'lports': 4056, 'nvp_build': u'31481', 'lswitch_stt': 2000}, 
     {'lports': 4056, 'nvp_build': u'31489', 'lswitch_stt': 2000}, 
     {'lports': 4056, 'nvp_build': u'31494', 'lswitch_stt': 2000}, 
     {'lports': 4056, 'nvp_build': u'31559', 'lswitch_stt': 2000}] 
   is not JSON serializable

然而,当我手动运行它,并利用上面的数组并执行json.dumps()时,它可以工作...... 任何线索?

1 个答案:

答案 0 :(得分:3)

使用django的内置serializers

from django.core import serializers
from django.http import HttpResponse   


def get_info(request):
    data = serializers.serialize('json', 
                                 Run.objects.all(), 
                                 fields=('nvp_build', 'lports', 'lswitch_stt'))
    return HttpResponse(data, content_type='application/json')

希望有所帮助。