Python 如何通过Django Rest框架返回嵌套json
我在postgres数据库中有这样的数据Python 如何通过Django Rest框架返回嵌套json,python,json,django-rest-framework,nested,Python,Json,Django Rest Framework,Nested,我在postgres数据库中有这样的数据 [ { "machine": "MC1", "work" : [ { "title": "21TCE20200910", "subTitle1": "INSERT CORE",
[
{
"machine": "MC1",
"work" : [
{
"title": "21TCE20200910",
"subTitle1": "INSERT CORE",
"subTitle2": "P20200910-001",
"subTitle3": "DRAW20200910",
"status": 0,
"delay": 2
},
{
"title": "21TCE20200910",
"subTitle1": "INSERT CORE",
"subTitle2": "P20200910-001",
"subTitle3": "DRAW20200912",
"status": 1,
"delay": 1
}
]
},
{
"machine": "MC2",
"work" : [
{
"title": "21TCE20200911",
"subTitle1": "SCREW",
"subTitle2": "P20200910-001",
"subTitle3": "DRAW20200910",
"status": 1,
"delay": 2
}
]
},
{
"machine": "MC3",
"work" : [
{
"title": "21TCE20200913",
"subTitle1": "INSERT FIX",
"subTitle2": "P20200910-001",
"subTitle3": "DRAW20200910",
"status": 0,
"delay": 1
}
]
}
我想创建RESTAPI来返回嵌套的json,如下所示
[
{
"machine": "MC1",
"work" : [
{
"title": "21TCE20200910",
"subTitle1": "INSERT CORE",
"subTitle2": "P20200910-001",
"subTitle3": "DRAW20200910",
"status": 0,
"delay": 2
},
{
"title": "21TCE20200910",
"subTitle1": "INSERT CORE",
"subTitle2": "P20200910-001",
"subTitle3": "DRAW20200912",
"status": 1,
"delay": 1
}
]
},
{
"machine": "MC2",
"work" : [
{
"title": "21TCE20200911",
"subTitle1": "SCREW",
"subTitle2": "P20200910-001",
"subTitle3": "DRAW20200910",
"status": 1,
"delay": 2
}
]
},
{
"machine": "MC3",
"work" : [
{
"title": "21TCE20200913",
"subTitle1": "INSERT FIX",
"subTitle2": "P20200910-001",
"subTitle3": "DRAW20200910",
"status": 0,
"delay": 1
}
]
}
]
目前,我只能为每条记录返回普通json,但我想分组并返回嵌套json,如有任何帮助,将不胜感激
下面是我的代码
model.py
从django.db导入模型
类别机器计划(models.Model):
machine=models.CharField(最大长度=255)
title=models.CharField(最大长度=255)
字幕1=models.CharField(最大长度=255)
字幕2=models.CharField(最大长度=255)
字幕3=models.CharField(最大长度=255)
状态=模型。整型字段(1)
延迟=模型。整数字段(1)
views.py
from django.shortcuts import render
from rest_framework import generics
from .models import MachineSchedule
from .serializers import MachineScheduleSerializer
class MachineScheduleListAPIView(generics.ListCreateAPIView):
serializer_class = MachineScheduleSerializer
model = MachineSchedule
fields = '__all__'
从django.shortcuts导入渲染
从rest_框架导入泛型
从。模型导入机器计划
从.serializers导入机器ScheduleSerializer
类MachineScheduleListAPIView(generics.ListCreateAPIView):
serializer_class=MachineScheduleSerializer
型号=机器计划
字段='\uuuu所有\uuuu'
序列化程序.py
from rest_framework import serializers
from .models import MachineAllocate
class MachineAllocateSerializer(serializers.ModelSerializer):
class Meta:
model = MachineAllocate
fields = '__all__'
从rest_框架导入序列化程序
从.models导入机器定位
类MachineAllocateSerializer(serializers.ModelSerializer):
类元:
型号=机器定位
字段='\uuuu所有\uuuu'
你能展示一下你试过的代码吗?我已经在下面贴了,谢谢!答案不是放置代码的地方。请将其移到您的问题。感谢您的回答,但当open api ProgrammingError列app\u mc\u schedule\u machineschedule.work\u id不存在时,它会显示类似这样的错误
#models
class Work(models.Model):
title = models.CharField(max_length=255)
subTitle1 = models.CharField(max_length=255)
subTitle2 = models.CharField(max_length=255)
subTitle3 = models.CharField(max_length=255)
status = models.IntegerField(1)
delay = models.IntegerField(1)
class MachineSchedule(models.Model):
machine = models.CharField(max_length=255)
work = models.ForeignKey(Work, on_delete=models.CASCADE, related_name='work')
#serializer
from rest_framework import serializers
from .models import *
class WorkSerializer(serializers.ModelSerializer):
class Meta:
model = MachineAllo
fields = '__all__'
class MachineScheduleSerializer(serializers.ModelSerializer):
work = WorkSerializer(many=True)
class Meta:
model = MachineAllo
fields = '__all__'
#views
from rest_framework import generics
from .models import MachineSchedule
from .serializers import MachineScheduleSerializer
class MachineScheduleListAPIView(generics.ListCreateAPIView):
serializer_class = MachineScheduleSerializer
model = MachineSchedule
fields = '__all__'