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

DRF如何使用同一个Serializer返回多条序列化数据

首先你写的期望返回格式存在JSON语法错误,合法的JSON结构中faults字段应该对应一个包含多个对象的数组,而非直接在对象内罗列多个无键对象,正确的合法目标结构如下:

{
  "faults": [
    {
      "date":"2021-07-02",
      ...
    },
    {
      "date":"2021-06-28",
      ...
    },
    {
      "date":"2021-05-02",
      ...
    }
  ]
}

以下是两种实现方案:

方案1:修正原有循环逻辑

初始化空列表存储每次序列化的结果,循环时追加数据即可,同时修正了你原有代码中status参数放错位置的问题:

dates = ["2021-05-02", "2021-06-28", "2021-07-02"]
faults_list = []
for date in dates:
    serializer = DatesSerializer({
         "date": date,
         ... # 其他字段赋值逻辑保持不变
    })
    faults_list.append(serializer.data)
return Response({"faults": faults_list}, status=200)

方案2:更推荐的DRF原生批量序列化写法

无需手动循环,直接构造数据列表后传入序列化器,指定many=True即可批量处理,代码更简洁性能更优:

dates = ["2021-05-02", "2021-06-28", "2021-07-02"]
# 构造所有待序列化数据的列表
data_list = [{"date": date, ...} for date in dates]
# many=True 开启批量序列化
serializer = DatesSerializer(data_list, many=True)
return Response({"faults": serializer.data}, status=200)

内容的提问来源于stack exchange,提问作者Raul Quinzani

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 01:24:03