我有一个呈现json的视图功能。我能够在我的json中指定我想要的列,但我不知道如何更改关键字段的名称。像字段“pk”应该是“id”。
我正在使用此自动完成控件(http://loopj.com/2009/04/25/jquery-plugin-tokenizing-autocomplete-text-entry/),它需要json具有某些字段。
from django.http import HttpResponse
from django.shortcuts import render_to_response
from iCookItThisWay.recipes import models
from django.core import serializers
from django.utils import simplejson
def index(request, template_name):
meal_types = []
q = ''
if 'q' in request.GET and request.GET['q']:
q = request.GET['q']
if len(q) > 0:
meal_types = models.MealType.objects.filter(name__istartswith=q)
json_serializer = serializers.get_serializer("json")()
sdata = json_serializer.serialize(meal_types, ensure_ascii=False, fields = ('id', 'name'))
return HttpResponse(simplejson.dumps(sdata), mimetype='application/json')
你还能指点我一些文件吗?我觉得我很难找到文件。
答案 0 :(得分:1)
您可以手动构建一个字典并通过.dumps()
将其转换为json,而不是使用序列化程序。meal_types = models.MealType.objects.filter(name__istartswith=q)
results = []
for meal_type in meal_types:
results.append(
{'id': meal_type.id,
'name': meal_type.name})
return HttpResponse(simplejson.dumps(results), mimetype='application/json')
你也可以使用列表理解来构建结果,因为只有一对 的领域:
results = [{'id': mt.id, 'name': mt.name} for mt in meal_types]