Django Rest Framework如何返回嵌套的JSON?

3

我在Postgres数据库中有这样的数据:

我想创建REST API,以返回嵌套的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,任何帮助都将不胜感激。

以下是我的代码

    from django.db import models
    class MachineSchedule(models.Model):
        machine = models.CharField(max_length=255)
        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)

视图.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__'

序列化.py

    from rest_framework import serializers
    from .models import MachineAllocate
    
    class MachineAllocateSerializer(serializers.ModelSerializer):
        class Meta:
            model = MachineAllocate
            fields = '__all__'


你能展示一下你尝试过的代码吗? - undefined
我已经在下面发布了,谢谢! - undefined
回答不是放置代码的地方。请将代码移到你的问题中。 - undefined
1个回答

1
#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__'

感谢您的回答,但是当打开API时,它显示了以下错误: 编程错误列app_mc_schedule_machineschedule.work_id不存在 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接