开发者

How to include annotation in JSON string?

I've got a view that returns a list of shipments encoded as JSON...

def get_new_shipments(request):
    # 开发者_如何学Python...
    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

But I don't see those annotations in the JSON anywhere... how do I get them to be included?


This seems to work:

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))

credit

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜