Python 如何在Django Rest框架中序列化要列出的OneToOneField?
如何序列化要列表的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
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