16

私は次のクエリセットを持っています:

prices = Price.objects.filter(product=product).values_list('price', 'valid_from')

「json」として価格を取得するにはどうすればよいですか

{"aaData": [
    ["70.1700", "2007-01-01"], # price, valid_form
    ["72.6500", "2008-01-01"], # price, valid_form
    ["74.5500", "2009-01-01"], # price, valid_form
    ["76.6500", "2010-01-01"]
]}
4

2 に答える 2

42

より良いアプローチは、DjangoJSONEncoderを使用することです。をサポートしていDecimalます。

import json
from django.core.serializers.json import DjangoJSONEncoder

prices = Price.objects.filter(product=product).values_list('price', 'valid_from')

prices_json = json.dumps(list(prices), cls=DjangoJSONEncoder)

とても使いやすいです。個々のフィールドをfloat.

更新: simplejson の代わりに組み込みの json を使用するように回答を変更しました。

于 2012-05-08T17:03:26.607 に答える
0
from django.utils import simplejson

prices = Price.objects.filter(product=product).values_list('price', 'valid_from')
simplejson.dumps({'aaData': prices})

編集

あなたの質問からは明らかではありませんでしpriceDecimalFieldDecimalからに変換する必要があるようですfloat:

simplejson.dumps({'aaData': (float(price), valid_from) for price, valid_from in prices})

あるいは、価格を文字列にしたい場合:

simplejson.dumps({'aaData': (str(price), valid_from) for price, valid_from in prices})
于 2012-05-08T16:09:12.953 に答える