Как включить аннотацию в строку JSON? - PullRequest
0 голосов
/ 27 октября 2010

У меня есть представление, которое возвращает список отправлений в кодировке JSON ...

def get_new_shipments(request):
    # ...
    shipments = Shipment.objects.filter(filter).exclude(**exclude).order_by(order) \
        .annotate(num_bids=Count('bids'), min_bid=Min('bids__amount'), max_bid=Max('bids__amount'))
    return json_response(shipments)

def json_response(data):
    response = HttpResponse(mimetype='application/json')
    serializer = serializers.get_serializer("json")()
    data = list(data)
    serializer.serialize(data, ensure_ascii=False, stream=response)
    return response

Но я нигде не вижу этих аннотаций в JSON ... как мне их включить?

1 Ответ

1 голос
/ 27 октября 2010

Это похоже на работу:

return HttpResponse(simplejson.dumps(list(shipments.values()), ensure_ascii=False, default=json_formatter), mimetype='application/json')

def json_formatter(obj):
    if isinstance(obj, datetime.datetime):
        return obj.isoformat()
    elif isinstance(obj, Decimal):
        return unicode(obj)
    else:
        raise TypeError, 'Object of type %s with value of %s is not JSON serializable' % (type(obj), repr(obj))

кредит

...