假设有如下模型
class Category(models.Model):
parent = models.ForeignKey('self', related_name='children', null=True,
blank=True,
on_delete=models.CASCADE)
想要输出Category树的话,可以通过如下代码实现可以复用的序列化代码
class RecursiveSerializer(serializers.Serializer):
def to_representation(self, value):
serializer = self.parent.parent.__class__(value, context=self.context)
return serializer.data
使用时如下:
class CategorySerializer(serializers.ModelSerializer):
children = RecursiveSerializer(many=True)
class Meta:
model = Category
fields = "__all__"
原理大家可以探究一下。之后如果我看的话,会在下面更新!