2010-06-21 143 views
3

我有一個呈現json的視圖函數。我能夠在我的json中指定我想要的列,但我不知道如何更改關鍵字段的名稱。像字段「PK」應該是「ID」。從json中刪除字段

我正在使用此自動完成控件(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') 

你能不能請我指點一些文檔。我覺得我在尋找文檔方面很蠢。

回答

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]