from adrf.serializers import ModelSerializer, SerializerMethodField from ..models import Region class RegionSerializer(ModelSerializer): children = SerializerMethodField() class Meta: model = Region fields = ['id', 'name', 'code', 'level', 'parent_id', 'pinyin', 'children'] async def get_children(self, obj): children_qs = obj.children.all() if await children_qs.aexists(): # 递归异步序列化 return [await RegionSerializer(c, context=self.context).adata async for c in children_qs] return None class RegionSimpleSerializer(ModelSerializer): class Meta: model = Region fields = ['id', 'name', 'code', 'level', 'parent_id', 'pinyin']