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)
我会尽量简化我的问题:
我有这个序列化程序:
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)