json - 如何在 django rest 序列化程序中创建嵌套的 json 格式?
问题描述
目前我在 API 响应中有这种格式
"inner_divertor": {
"volume": 5.2,
"volume_units": "m^2",
"volume_notes": "xyz"
},
"outer_divertor": {
"volume": null,
"volume_units": "m^3",
"volume_notes": null
}
我正在尝试添加一个“卷”字段并将字段嵌套在其中。目标是有类似的东西:
"inner_divertor": {
volume:{
"volume": 4.3,
"volume_units": "m^2",
"volume_notes": "xyz"
}
},
"outer_divertor": {
volume: {
"volume": null,
"volume_units": "m^3",
"volume_notes": null
}
}
以下是序列化程序:
class InnerDivertorSerializer(FlexFieldsModelSerializer):
class Meta:
model = InnerDivertor
fields = ('volume', 'volume_units', 'volume_notes')
class OuterDivertorSerializer(FlexFieldsModelSerializer):
class Meta:
model = OuterDivertor
fields = ('volume', 'volume_units', 'volume_notes')
解决方案
那么根据这个链接文档, https ://pypi.org/project/drf-flex-fields/
我认为您不应该将inner_divertor
,outer_divertor
分成两个单独的类,因为它们处于同一层次结构中。
而不是尝试这个:
class DivertorSerializer(FlexFieldsModelSerializer):
class Meta:
model = Divertor
fields = ('inner_divertor', 'outer_divertor')
expandable_fields = {
'inner_divertor': VolumnSerializer,
'outer_divertor': VolumnSerializer
}
class VolumnSerializer(FlexFieldsModelSerializer):
class Meta:
model = Volumn
fields = ('volume', 'volume_units', 'volume_notes')
更重要的是你需要有 Volumn 和 Divertormodel
推荐阅读
- c# - 有没有办法将计算字段附加到 Select()?
- c++ - 将 libtomcrypt 和 libtommath 添加到我的 c++ 项目中
- c# - API WebService 没有响应
- genexus - Genexus 15 升级 11 Webnotifications throw java.lang.ClassNotFoundException: com.genexus.internet.websocket.GXWebSocket
- php - 第一个 SQL 数据库不工作
- autoit - AutoIt 等待 Chrome 加载
- angular - 是否可以在特定的 DOM 元素上打开 angular/Material2 Snackbar?
- fortran - Fortran的“include”语句和“#include”指令的区别
- c# - 优化代码
- php - 维护:单例与依赖注入