2017-09-07 10 views
0

を外部キークエリセットを追加することにより、クエリセットを作成します。DRFは、私が<strong>親モデルのクエリセット</strong>に<strong>外国データに(子供モデル)</strong>を取得したい、それに

私は親データ外国データを追加することができていますが、それはJSONです。 JSONget_queryset()モデル/クエリーセットを返すので、そのクエリーセットに変換したいのですが。

私はたくさんのGoogle検索を行っていますが、役に立たないものは見つかりませんでした。

class Parent(models.Model): 
    parent_name = models.TextField() 
    child = models.ForeignKey(Child, related_name="+", on_delete=models.CASCADE, null=True) 


class Child(models.Model): 
    child_name = models.TextField() 


class ParentViewSet(viewsets.ModelViewSet): 
    queryset = Parent.objects.all() 
    serializer_class = ParentInfoSerializer 
    filter_backends = (filters.DjangoFilterBackend,) 
    filter_fields = ['parent_name'] 

    def get_queryset(self): 
     response = [] 
     parent_name = self.request.GET.getlist("parent_name")[0]# 
     parent_queryset = 
       Parent.objects.filter(parent_name=parent_name) 
     for par_queryset in parent_queryset: 
      parent_result = self.serializer_class(phy_queryset).data 
      child_id = physician_info_result["child"] 
      child_instance = Child.objects.get(pk=child_id) 
      child_result = ChildSerializer(child_instance).data 
      parent_result["child"] = child_result 
      response.append(parent_result) 
     return response 

URL -

http://localhost:9000/api/parent?parent_name=xyz 

応答出力は次のとおりです。

[{ "PARENT_NAME": "XYZ"、 "子":[{ 「ID ":1 " child_name ":" abc " }] } ]

しかし、出力の上に、それは私がはしたくないJSONです。 queryset/modelに出力します。

:クエリーセットの出力には、外部クエリーセットが含まれている必要があります。

答えて

2

子と子のシリアライザのデフォルトフィールドを置き換えるだけで、好きなように動作します。

class ParentSerializer(models.Model): 
    child = ChildSerializer() 

    class Meta: 
     models = Parent 
     fields = ('parent_name', 'child') 

そして、あなたもget_querysetメソッドをオーバーライドする必要はありません。

+1

@Ivan Semochkinと同意します。 – CrazyGeek

関連する問題

 関連する問題