0

:私が欲しいいただきまし変更オブジェクトキー

class SomeViewSet(ModelViewSet): 
    queryset = Some.objects.all() 
    serialize_class = SomeSerializer 
    .... 
    def get_queryset(self): 
     some_param = self.request.query_params.get("some_param", None) 
     if some_param: 
      for some in queryset: 
       some.fk_another_key = SomeAnother.objects.get(pk=some.fk_another_key.id) 

     return queryset 

は「FKオブジェクト」にfk__pkを変更です。私は残りのフレームワークを使用しており、場合によっては、シリアライザで"depth"または"set object"と宣言することはできません。

現在、私の結果をJSONはこの

{ 
    ... 
    keyX: "", 
    keyY: "", 
    some_another: 1 
    ... 
} 

であり、私はこの

{ 
    ... 
    keyX: "", 
    keyY: "", 
    some_another: { 
     ... 
     valueX: "", 
     valueY: "" 
     ... 
    } 
} 

のようないくつかの感謝を必要とします。

+0

対応する「SomeAnother」シリアライザを使用して直列化されるように、あなたのシリアライザを変更することです。具体的には、マニュアルやネストされたシリアライザを参照してください。 –

+0

シリアライザでは「パラメータ」を持つことができ、これによって「シリアライザ」が変更されますか? – user3854612

+0

ここをクリック:http://www.django-rest-framework.org/api-guide/relations/#nested-relationships –

答えて

0

それを行うための適切な方法は、some_another外部キーはあなたがそれを行うためにシリアライザを変更するために持っている

class SomeAnotherSerializer(serializers.HyperlinkedModelSerializer): 

    class Meta: 
     model = SomeAnother 
     fields = ('pk', 'valueX', 'valueY') 


class SomeSerializer(serializers.HyperlinkedModelSerializer): 

    some_another = SomeAnotherSerializer() 

    class Meta: 
     model = Some 
     fields = ('pk', 'keyX', 'keyY', 'some_another ')