当前位置: 首页 > 知识库问答 >
问题:

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

邢华清
2023-03-14

我在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,如有任何帮助,将不胜感激

下面是我的代码model.py


    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)

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

序列化程序.py


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

共有1个答案

云慈
2023-03-14
#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__'
 类似资料:
  • var设置=新的ConnectionSettings(DefaultIndex:“Documents”);var客户端=新的弹性客户端(设置); 我试图使用nest与我的项目(框架3.5),但它不工作,请我需要Dll支持这个框架版本。 最好的,

  • 问题内容: 我有这个映射: 而这个查询: 我等待25个结果,因为我有25个后索引。但是我得到一个空集。如果我删除嵌套的过滤器,一切正常。我希望能够过滤嵌套对象 在我的设置中,我有: 我在这里缺少什么。 谢谢 问题答案: 简短版本: 尝试此操作(更新端点和索引名称后): 它对我有用,并且简化了您的设置。稍后,我将发布带有较长解释的编辑。 编辑:长版: 查询的问题是分析器与查询中的过滤器结合在一起。您

  • 问题内容: 我有如下所示的html页面,我需要在类clslogin中单击Login。 我如何遍历以查找登录名。我正在将C#与Selenium Webdriver一起使用。 使用XPath(/ html / body / div / table / tbody / tr [1] / td [3] / a)时,我无法控制Login类,始终找不到元素抛出错误。谁能帮助我获得确切的xpath。 问题答案:

  • 当我要求一个图像http://127.0.0.1:8000/api/images/1/或者传入参数进行裁剪http://127.0.0.1:8000/api/images/1/?height=320 我得到的答复是: 而在http://127.0.0.1:8000/api/images/ 答复是: 为什么缩略图不容易返回主机名,我如何将基本网址追加到响应中? 以下是我的看法。派克

  • 问题内容: SwiftyJson和Alamofire如何将嵌套的json作为方法体发布如下(Swift 3) 我使用alamofire检查了许多post Jsonpost嵌套对象,如何使用Alamofire和SwiftyJSON访问嵌套的JSON值? ,对象和集合的AlamofireJSON序列化等。但是,在这种情况下,它们都不起作用。 问题答案: 试试这个 我希望这有帮助

  • 问题内容: 按引用返回的切片为空: 如何通过引用从函数返回切片? 问题答案: 通过分配给,您可以更改指向的位置,而不是指向的值。要做后者,而不是write 。