如何将Django REST Framework序列化数据转为指定JSON格式
在Django REST Framework中返回扁平的关联字段值列表
要把directions从嵌套的对象数组转成纯字符串数组,有两种简单的实现方式:
方法一:使用DRF自带的StringRelatedField
直接替换序列化器中directions字段的定义,StringRelatedField会自动关联模型的__str__方法返回值,刚好你的Directions模型__str__返回的就是name字段,完美匹配需求:
from rest_framework import serializers from .models import Doctors, Directions class DoctorsSerializer(serializers.ModelSerializer): # 替换原来的DirectionsSerializer,用StringRelatedField directions = serializers.StringRelatedField(many=True) class Meta: model = Doctors fields = ('name', 'directions')
方法二:使用SerializerMethodField自定义逻辑
如果后续需要更灵活的处理(比如要返回非__str__的字段),可以用自定义方法来获取值:
from rest_framework import serializers from .models import Doctors, Directions class DoctorsSerializer(serializers.ModelSerializer): directions = serializers.SerializerMethodField() def get_directions(self, obj): # 直接从关联对象中提取name字段,组成列表 return [direction.name for direction in obj.directions.all()] class Meta: model = Doctors fields = ('name', 'directions')
两种方法都能输出你需要的JSON格式:
[ { "name": "doc2", "directions": [ "mar", "qwe" ] }, { "name": "John", "directions": [ "Surgery", "qwe" ] } ]
内容的提问来源于stack exchange,提问作者M GUDA
相关产品推荐
相关产品推荐

