[英]How can I serialize the OneToOneField to be list in 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(to=SwitchesPort, related_name="server", on_delete=models.DO_NOTHING, null=True)
您會看到,它們是OneToOne關系。
在SwitchesPortSerializer中,我只能將physical_server
設置為many=False
:
class SwitchesPortSerializer(ModelSerializer):
"""
SwitchesPort
"""
server = ServerSerializer(many=False, read_only=True)
class Meta:
...
如果我設置為True,則將報告錯誤,因為它們是一對一的關系。 結果將是這樣的:
[
{
"name": "switches_port01",
"profile":"",
"server": {
"name": "server01",
...
}
},
...
]
但是,我想將physical_server
作為JSON列表而不是JSON對象獲取,如何在Django-Rest-Framework中做到這一點?
我的需求數據是這樣的:
[
{
"name": "switches_port01",
"profile":"",
"server": [
{
"name": "server01",
...
}
]
},
...
]
盡管關系是一對一的,但我仍然想要獲取列表,而不是對象。
可行嗎?
您可以從序列化程序類重寫to_representation
方法
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.