DRF 如何 return 同一个序列化器中的多个数据

DRF how to return multiple datas inside the same serializer

我会尽量简化我的问题:

我有这个序列化程序:

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"
            ....
          }
}

我知道在我的循环中我正在覆盖我的序列化器,这就是为什么我只有最后一个条目,但我试图通过添加一个字典来克服这个问题但没有任何进展,因为密钥总是相同的,我一直在想如何解决这个问题

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

res = []

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