Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何通过Django Rest框架返回嵌套json_Python_Json_Django Rest Framework_Nested - Fatal编程技术网

Python 如何通过Django Rest框架返回嵌套json

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",

我在postgres数据库中有这样的数据

[
{
    "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__'