0

私は親と呼ばれる自己参照フィールドを持つモデルを持っています。 モデル:Django Rest Framework再帰ネストされた親シリアライズ

class Zone(BaseModel): 
    name = models.CharField(max_length=200) 
    parent = models.ForeignKey('self', models.CASCADE, blank=True, null=True, related_name='children') 

    def __unicode__(self): 
     return self.name 

シリアライザ:

class ZoneSerializer(ModelSerializer): 
    parent = PrimaryKeyRelatedField(many=False, queryset=Zone.objects.all()) 
    parent_disp = StringRelatedField(many=False, source="parent") 

    class Meta: 
     model = Zone 
     fields = ('id', 'name', 'parent', 'parent_disp') 

は、今私は、ゾーンの親とその親をシリアル化したいと親までその親はnoneです。 子供用の再帰的なシリアル化メソッドが見つかりましたが、親用の再帰的なシリアル化メソッドは見つかりませんでした。 どうすればいいですか?ここ

答えて

2

てみ使用SerializerMethodField

def get_parent(self, obj): 
    # query what your want here. 

は私がD-R-Fは、このためのビルドのメソッドを持ってわからないんだけど、あなたは、この方法では欲しいものを得るためにクエリを使用することができます。

+0

しかし、私は親をシリアル化する必要があります。だから私は再帰シリアライザが必要です。 –

1

わかりました。

class ZoneSerializer(ModelSerializer): 
    parent = SerializerMethodField() 

    class Meta: 
     model = Zone 
     fields = ('id', 'name', 'project', 'parent',) 

    def get_parent(self, obj): 
     if obj.parent is not None: 
      return ZoneSerializer(obj.parent).data 
     else: 
      return None 
関連する問題