Django REST框架自定义JSON

2024-09-29 17:12:35 发布

您现在位置:Python中文网/ 问答频道 /正文

如何将列表序列化为JSON对象?该列表组合了两种不同的型号,如下所示:

[<Room: 303 at 123 Toronto Street>, 
<Room: 305 at 123 Toronto Street>, 
<Room: 304 at 123 Toronto Street>, 
<SubvisitClinician: kchung>, 
<SubvisitClinician: pche>, 
<SubvisitClinician: mlo>]

我已经创建了RoomSerializer和SubvisitClinicianSerializer,但不确定如何完成和实现它。在

^{pr2}$

Tags: 对象jsonstreet列表序列化atroom型号
3条回答

谢谢你的回复,亚历克斯。在做了更多的研究之后,我设法回答了我自己的问题。重申了列表是如何创建并将其转换为对象的。创建了一个包含rooms和subvisit\u临床医生的RoomList类,然后创建了RoomListSerializer。代码如下。在

class RoomList(object):
    def __init__(self):
        super(RoomList, self).__init__()
        self.rooms = []
        self.subvisit_clinicians = []

    def add_room(self, room):
        self.rooms.append(room)

    def add_subvisit_clinician(self, subvisit_clinician):
        self.subvisit_clinicians.append(subvisit_clinician)

class RoomListSerializer(serializers.Serializer):
    rooms = RoomSerializer(many=True)
    subvisit_clinicians = SubvisitClinicianSerializer(many=True)

我很快就记不住了。在

简单示例:

data1 = RoomSerializer(self.get_queryset(), many=True).data
data2 = SubvisitClinicianSerializer(self.get_queryset(), many=True).data
data_list = data1 + data2

您可以编写函数,该函数将迭代列表并根据类型调用所需的序列化程序:

def serialize_list(data):
    return [RoomSerializer(i) if isinstance(i, Room) else SubvisitClinicianSerializer(i) for i in data]

相关问题 更多 >

    热门问题