首页 > 解决方案 > DRF如何在同一个序列化器中返回多个数据

问题描述

我会尽量让我的问题尽可能简单:

我有这个序列化程序:

class DatesSerializer(serializers.Serializer):
    date = serializers.CharField(max_length=10)
    ... bunch of stuff and Others serializers

在我的 view.py 上,我有这段代码:

dates = ["2021-05-02", "2021-06-28", "2021-07-02"]
...
for date in dates:
    faults = DatesSerializer({
         "date":date,
         ...
    })
return Response({"faults":faults.data, status=200})

我收到这样的回复:

{
 "faults":{
            "date":"2021-07-02"
            ....
          }
}

我想要的是这样的回应

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

我知道在我的循环中我正在覆盖我的序列化程序,这就是为什么我只有最后一个条目,但我试图通过添加一个 dict 来克服这个问题,但因为密钥总是相同的,所以我没有坚持如何解决这个问题

标签: python-3.xserializationdjango-rest-frameworknestedresponse

解决方案


你想要的不是一个有效的对象。您需要一个列表,这可以通过在每次迭代中附加序列化程序数据在循环中轻松完成。

res = []

for date in dates:
    serializer = DatesSerializer({
         "date":date,
         ...
    })
    res.append(serializer.data)
return Response({ "faults": res }, status=200)

推荐阅读