0

我有一個名爲parent的自引用字段的模型。 型號:Django Rest框架遞歸嵌套Parent序列化

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') 

現在我想要序列的區域及其母公司及其母公司,直到父父是沒有的。 我發現遞歸序列化方法的孩子,但不是家長。 我該怎麼做?

回答

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 
相關問題