2017-03-19 9 views
0

のリストデシリアライズ:ジャンゴRESTフレームワーク:私は以下のようなJSONデータを受け入れるようにしたいオブジェクト

{ 
    'id': 166, 
    'data_lines': [ 
     { 
      'name': 'string', 
      'quantity': '1', 
      'id': '1' 
     }, 

     { 
      'name': 'string', 
      'quantity': '2', 
      'id': '12' 
     }, 

     { 
      'name': 'string', 
      'quantity': '3', 
      'id': '18' 
     } 
    ], 
} 

を、私はデータをデシリアライズすることによってそれから、単純な買い物かごを構築することができるようにしたい

問題は、この時点で3つのシリアライザが関係していることです。そのうちの一つで

、のはMiddleSerializerそれを呼ぶことにしましょう、私が持っている:

class MiddleSerializer(serializers.Serializer): 
    thing = ThingSerializer() 

私はちょうどそのThingsSerializerに入ってくるIDを渡すと、それは、独自のものを扱うようにしたいです。それは私がそれの中の重要なものを持つdictを渡すとき、すべてうまく動作します。

しかし、私はこれらのリストを持つことができたいと思いますし、このMiddleSerializerがネストされているシリアライザを持っています。それは以下のようになります。

class TopSerializer(serializers.Serializer): 
    some_other_id = serializers.IntegerField() 
    things = serializers.ListField(child=MiddleSerializer()) 
    # I also tried the above with (many=True) 

しかし、私はこのTopSerializer私のデータを渡すとき、それは私に必要とされるキーワード「事」の行方不明についてのエラーが発生します。

データのリストを渡すためにシリアライザを設定する必要はありますか?私は、ThingSerializer()がModelSerializerなので、何とかPrimaryKeyRelatedField()を利用できる気がします。しかし、私は、非モデルのシリアライザからこれをどのように使用するかについて、ドキュメントが少し不明で、それが目的を果たすかどうかはわかりません。そうだ。

答えて

0

これは私の思考プロセスの間違いであることが判明しました。以下のようにJSONを書式設定すると、そのトリックが行われました。

{ 
    'thing': { 
     'name': 'string', 
     'id': '18', 
    }, 
    quantity': '3' 
} 
関連する問題