Удаление полей из JSON - PullRequest
       3

Удаление полей из JSON

3 голосов
/ 21 июня 2010

У меня есть функция просмотра, которая отображает 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')

Не могли бы вы также указать мне некоторую документацию.что я дерьмо при поиске документации.

1 Ответ

1 голос
/ 21 июня 2010

Вместо использования сериализатора, вы можете создать dict вручную и преобразовать его в json с помощью .dumps ()

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]
...