なぜDjangoは私にこの例外を与えるのですか
[(7, u'Acura'), (18, u'Alfa Romeo'), ...] is not JSON serializable
やってみると
data = VehicleMake.objects.filter(model__start_year__gte=request.GET.get('year',0)).values_list('id','name')
return HttpResponse(simplejson.dumps(data, ensure_ascii=False), mimetype='application/json')
?
タプルの単純なリストです。これは、ほぼ同じ形式のハードコードされた他のリストで機能します。文字列がユニコードだからですか?どうすればそれを処理できますか?
dictとしてエンコードすると、正常に機能します。
def get_makes(request):
year = request.GET.get('year',0)
data = VehicleMake.objects.filter(model__start_year__lte=year, model__stop_year__gte=year).order_by('name').distinct().values_list('id','name')
return HttpResponse(simplejson.dumps(odict(data), ensure_ascii=False), mimetype='application/json')
いくつかのメーカーはアクセントのある文字を持っています...それはそれでしょうか?はい、リストは大きいです(合計で約900になります)。