feat: ADRF async views (phase1) + native async serializers (phase2) + async cache infra
This commit is contained in:
@@ -1,22 +1,23 @@
|
||||
from rest_framework import serializers
|
||||
from adrf.serializers import ModelSerializer, SerializerMethodField
|
||||
from ..models import Region
|
||||
|
||||
|
||||
class RegionSerializer(serializers.ModelSerializer):
|
||||
children = serializers.SerializerMethodField()
|
||||
class RegionSerializer(ModelSerializer):
|
||||
children = SerializerMethodField()
|
||||
|
||||
class Meta:
|
||||
model = Region
|
||||
fields = ['id', 'name', 'code', 'level', 'parent_id', 'pinyin', 'children']
|
||||
|
||||
def get_children(self, obj):
|
||||
children = obj.children.all()
|
||||
if children.exists():
|
||||
return RegionSerializer(children, many=True).data
|
||||
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(serializers.ModelSerializer):
|
||||
class RegionSimpleSerializer(ModelSerializer):
|
||||
class Meta:
|
||||
model = Region
|
||||
fields = ['id', 'name', 'code', 'level', 'parent_id', 'pinyin']
|
||||
|
||||
Reference in New Issue
Block a user