2017-03-05 11 views
1

私はDjango REST Frameworkのネストシリアライザでピクルスを少し持っています。Django RESTフレームワーク:ネストされたシリアライザがシリアル化されていません

私はProductSerializerというシリアライザを持っています。それはserializers.ModelSerializerで、単独で使用する場合、正しく次の出力を生成します。

{'id': 1, 'name': 'name of the product'}

私は現在、以下のクラス持っているショッピングカート/バスケット機能、構築しています:

class BasketItem: 

    def __init__(self, id): 
     self.id = id 
     self.products = [] 

とシリアライザ:私は、次のコードを含むテストケースを持って

class BasketItemSerializer(serializers.Serializer): 
    id = serializers.IntegerField() 
    products = ProductSerializer(many=True) 

products = Product.objects.all() # gets some initial product data from a test fixture 

basket_item = BasketItem(1) # just passing a dummy id to the constructor for now 
basket_item.products.append(products[0]) 
basket_item.products.append(product1[1]) 

ser_basket_item = BasketItemSerializer(basket_item) 

上記の製品はモデルです。モデル。私は何を期待

print(ser_basket_item.data) 

{'id': 1, 'products': [OrderedDict([('id', 1), ('name', 'name of the product')]), OrderedDict([('id', 2), ('name', 'name of the product')])]} 

を行うときに今、より多くのようなものです:

あなたは私が間違っているつもりだと思います
{ 
    'id': 1, 
    'products': [ 
     {'id': 1, 'name': 'name of the product'} 
     {'id': 2, 'name': 'name of the product'} 
    ] 
} 

答えて

2

すべて問題ありません。

これは、順序を保持するために、DRFは基本辞書を使用できないため、順序を保持しないためです。そこにOrderedDictが表示されます。

レンダラがそれを処理し、正しい値を出力します。

+0

まあまあです。そして、ここで私は実際にそれを聞いたよりも良い仕事をしていたジャンゴでうずくまっていた。 json.dumpsで確認しました。本当にありがとうございます。ありがとう! – xtrom0rt

関連する問題