【问题标题】:DRF how to return multiple datas inside the same serializerDRF如何在同一个序列化器中返回多个数据
【发布时间】:2021-09-01 23:55:44
【问题描述】:

我会尽量让我的问题变得简单:

我有这个序列化程序:

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.x serialization django-rest-framework nested response


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-06-17
      • 2020-01-05
      • 1970-01-01
      • 2019-07-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多