Python 如何在Django Rest框架中序列化要列出的OneToOneField?

Python 如何在Django Rest框架中序列化要列出的OneToOneField?,python,django,django-rest-framework,Python,Django,Django Rest Framework,如何序列化要列表的OneToOneField 我有两个模型: class SwitchesPort(models.Model): """ SwitchesPort """ name = models.CharField(max_length=32) profile = models.CharField(max_length=256) class Server(models.Model): ... switchesport = models

如何序列化要列表的OneToOneField

我有两个模型:

class SwitchesPort(models.Model):
    """
    SwitchesPort
    """
    name = models.CharField(max_length=32)
    profile = models.CharField(max_length=256)

class Server(models.Model):
    ...
    switchesport = models.OneToOneField(to=SwitchesPort, related_name="server", on_delete=models.DO_NOTHING, null=True)  
你看,他们是一对一的关系

在SwitchesPortSerializer中,我只能将物理服务器many=False设置为:

如果我设置为True,则会报告错误,因为它们是一对一的关系。 结果如下:

[
    {
        "name": "switches_port01",
        "profile":"",
        "server": {
            "name": "server01",
            ...
        }
    },
    ...
]
[
    {
        "name": "switches_port01",
        "profile":"",
        "server": [
            {
            "name": "server01",
            ...
            }
        ]
    },
    ...
]
但是,我想将物理_服务器作为JSON列表,而不是JSON对象,在Django Rest框架中如何实现这一点

我的需求数据如下:

[
    {
        "name": "switches_port01",
        "profile":"",
        "server": {
            "name": "server01",
            ...
        }
    },
    ...
]
[
    {
        "name": "switches_port01",
        "profile":"",
        "server": [
            {
            "name": "server01",
            ...
            }
        ]
    },
    ...
]
尽管这种关系是一对一的,但我仍然希望得到列表,而不是对象。 可以得到吗?

您可以从serializer类重写为\u表示方法

class SwitchesPortSerializer(ModelSerializer):
    """
    SwitchesPort
    """
    physical_server = ServerSerializer(read_only=True)

    def to_representation(self, instance):
        ret = super().to_representation(instance)
        ret['physical_server'] = [ret['physical_server']]
        return ret