You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 02:05:20