[英]How to return nested json by Django Rest Framework
我在 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)
視圖.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__'
#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__'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.