2016-05-03 3 views
1

私はこれらのシリアライザがあります。以下はオブジェクトをDjango Rest Frameworkのidで置き換えるにはどうしたらいいですか?私は、応答データは、すべてのネストされた完璧なオブジェクト、ネストされたオブジェクトのIDだけでなく、の含まれるようにしたい</p> <pre><code>data_json = { "id": '1', "b": '2', "created_by":'3', "message": 'Hello world' } </code></pre> <p>:

class ASerializer(serializers.ModelSerializer): 
    name = serializers.CharField() 

    class Meta: 
     model = AModel 
     fields = ('id','name') 


class BSerializer(serializers.HyperlinkedModelSerializer): 
    a = ASerializer(partial=True) 
    name = serializers.CharField() 

    class Meta: 
     model = ‌‌BModel 
     fields = ('id','name', 'a') 


class CSerializer(serializers.HyperlinkedModelSerializer): 
    b = BSerializer(partial=True) 
    created_by = UserSerializer(required=False) 
    message = serializers.CharField() 

    class Meta: 
     model = CModel 
     fields = ('id','b', 'created_by', 'message') 

は私がサービスに送信、データであり、 。

オブジェクトを作成するには、Bオブジェクトまたはcreated_byオブジェクトをIDで置き換えるにはどうすればよいですか?

+0

試してみますフィールドを '(" id "、" b__id "、" created_by__id "、" message ")' –

+0

に変更し、完全なobjeを使ってIDを取得するct jsonのように 'b ['id']'、 'crearted_by ['id']' Cオブジェクトを作成するとき –

+0

あなたがしたいことをよりよく説明しようとしてください。どのようにdata_jsonを見た目にする必要がありますか? – ozren1983

答えて

0

として定義シリアライザで、この例を試してみてください。

class ASerializer(serializers.ModelSerializer): 
    name = serializers.CharField() 

    class Meta: 
     model = A 
     fields = ('id', 'name') 


class BSerializer(serializers.HyperlinkedModelSerializer): 
    name = serializers.CharField() 
    a = ASerializer(partial=True, many=True) 

    class Meta: 
     model = B 
     fields = ('id', 'name', 'a') 


class CSerializer(serializers.HyperlinkedModelSerializer): 
    name = serializers.CharField() 
    b = BSerializer(partial=True, many=True) 

    class Meta: 
     model = C 
     fields = ('id', 'name', 'b') 

そして、ビューセットのように定義:

class CViewSet(viewsets.ModelViewSet): 
    queryset = C.objects.all() 
    serializer_class = CSerializer 

そして、これは、上記のビューセットで返されるJSONの例である:

{ 
    "id": 2, 
    "name": "c2", 
    "b": [ 
     { 
      "id": 2, 
      "name": "b2", 
      "a": [ 
       { 
        "id": 2, 
        "name": "a2" 
       }, 
       { 
        "id": 3, 
        "name": "a3" 
       } 
      ] 
     }, 
     { 
      "id": 3, 
      "name": "b3", 
      "a": [ 
       { 
        "id": 3, 
        "name": "a3" 
       } 
      ] 
     } 
    ] 
}, 
+0

いいえdude、 'b'オブジェクトのIDが –

+0

のPOSTリクエストでは機能しません。ところで' b'はオブジェクトのリストではありません。 'b'は私がidで置き換える必要のある単一のオブジェクトです:) –

関連する問題

 関連する問題