Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.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 如何在不使用深度的情况下在子序列化程序中获取父模型?_Python_Django - Fatal编程技术网

Python 如何在不使用深度的情况下在子序列化程序中获取父模型?

Python 如何在不使用深度的情况下在子序列化程序中获取父模型?,python,django,Python,Django,我是django新手,我尝试过实践django rest api实现 型号.py from django.db import models class Parentmodel(models.Model): ptid = models.IntegerField(primary_key=True) ptname = models.CharField(default="",max_length=50) def __str__(self):

我是django新手,我尝试过实践django rest api实现

型号.py

from django.db import models

class Parentmodel(models.Model):
    ptid = models.IntegerField(primary_key=True)
    ptname = models.CharField(default="",max_length=50)
    def __str__(self):
        return self.ptname

class Studentmodel(models.Model):
    stid = models.IntegerField(primary_key=True)
    stname = models.CharField(max_length=50)
    ptid=models.ForeignKey(Parentmodel,db_column='ptid', related_name="student", on_delete=models.CASCADE)    
    def __str__(self):
        return self.stname

class Marksmodel(models.Model):
    Marksid=models.IntegerField(primary_key=True)
    maths=models.IntegerField()
    physics=models.IntegerField()
    science=models.IntegerField()
    stid=models.ForeignKey(Studentmodel,db_column='stid', related_name="marks", on_delete=models.CASCADE)    
    def __str__(self):
        return self.Marksid
from rest_framework import serializers
from polls.models import Studentmodel, Marksmodel, Parentmodel

class MarksSerializer(serializers.ModelSerializer):
  class Meta:
    model=Marksmodel
    fields="__all__"

class StudentSerializer(serializers.ModelSerializer):
  marks=MarksSerializer(read_only=True,many=True)
  class Meta:
    model=Studentmodel
    fields="__all__"

class ParentSerializer(serializers.ModelSerializer):
  student=StudentSerializer(read_only=True,many=True)
  class Meta:
    model=Parentmodel
    fields="__all__"
from rest_framework import viewsets
from .serializers import StudentSerializer, MarksSerializer, ParentSerializer
from .models import Studentmodel, Marksmodel, Parentmodel

class Studentapi(viewsets.ModelViewSet):
    queryset = Studentmodel.objects.all()
    serializer_class = StudentSerializer

class Marksapi(viewsets.ModelViewSet):
    queryset = Marksmodel.objects.all()
    serializer_class = MarksSerializer

class Parentapi(viewsets.ModelViewSet):
    queryset = Parentmodel.objects.all()
    serializer_class = ParentSerializer
序列化程序.py

from django.db import models

class Parentmodel(models.Model):
    ptid = models.IntegerField(primary_key=True)
    ptname = models.CharField(default="",max_length=50)
    def __str__(self):
        return self.ptname

class Studentmodel(models.Model):
    stid = models.IntegerField(primary_key=True)
    stname = models.CharField(max_length=50)
    ptid=models.ForeignKey(Parentmodel,db_column='ptid', related_name="student", on_delete=models.CASCADE)    
    def __str__(self):
        return self.stname

class Marksmodel(models.Model):
    Marksid=models.IntegerField(primary_key=True)
    maths=models.IntegerField()
    physics=models.IntegerField()
    science=models.IntegerField()
    stid=models.ForeignKey(Studentmodel,db_column='stid', related_name="marks", on_delete=models.CASCADE)    
    def __str__(self):
        return self.Marksid
from rest_framework import serializers
from polls.models import Studentmodel, Marksmodel, Parentmodel

class MarksSerializer(serializers.ModelSerializer):
  class Meta:
    model=Marksmodel
    fields="__all__"

class StudentSerializer(serializers.ModelSerializer):
  marks=MarksSerializer(read_only=True,many=True)
  class Meta:
    model=Studentmodel
    fields="__all__"

class ParentSerializer(serializers.ModelSerializer):
  student=StudentSerializer(read_only=True,many=True)
  class Meta:
    model=Parentmodel
    fields="__all__"
from rest_framework import viewsets
from .serializers import StudentSerializer, MarksSerializer, ParentSerializer
from .models import Studentmodel, Marksmodel, Parentmodel

class Studentapi(viewsets.ModelViewSet):
    queryset = Studentmodel.objects.all()
    serializer_class = StudentSerializer

class Marksapi(viewsets.ModelViewSet):
    queryset = Marksmodel.objects.all()
    serializer_class = MarksSerializer

class Parentapi(viewsets.ModelViewSet):
    queryset = Parentmodel.objects.all()
    serializer_class = ParentSerializer
视图.py

from django.db import models

class Parentmodel(models.Model):
    ptid = models.IntegerField(primary_key=True)
    ptname = models.CharField(default="",max_length=50)
    def __str__(self):
        return self.ptname

class Studentmodel(models.Model):
    stid = models.IntegerField(primary_key=True)
    stname = models.CharField(max_length=50)
    ptid=models.ForeignKey(Parentmodel,db_column='ptid', related_name="student", on_delete=models.CASCADE)    
    def __str__(self):
        return self.stname

class Marksmodel(models.Model):
    Marksid=models.IntegerField(primary_key=True)
    maths=models.IntegerField()
    physics=models.IntegerField()
    science=models.IntegerField()
    stid=models.ForeignKey(Studentmodel,db_column='stid', related_name="marks", on_delete=models.CASCADE)    
    def __str__(self):
        return self.Marksid
from rest_framework import serializers
from polls.models import Studentmodel, Marksmodel, Parentmodel

class MarksSerializer(serializers.ModelSerializer):
  class Meta:
    model=Marksmodel
    fields="__all__"

class StudentSerializer(serializers.ModelSerializer):
  marks=MarksSerializer(read_only=True,many=True)
  class Meta:
    model=Studentmodel
    fields="__all__"

class ParentSerializer(serializers.ModelSerializer):
  student=StudentSerializer(read_only=True,many=True)
  class Meta:
    model=Parentmodel
    fields="__all__"
from rest_framework import viewsets
from .serializers import StudentSerializer, MarksSerializer, ParentSerializer
from .models import Studentmodel, Marksmodel, Parentmodel

class Studentapi(viewsets.ModelViewSet):
    queryset = Studentmodel.objects.all()
    serializer_class = StudentSerializer

class Marksapi(viewsets.ModelViewSet):
    queryset = Marksmodel.objects.all()
    serializer_class = MarksSerializer

class Parentapi(viewsets.ModelViewSet):
    queryset = Parentmodel.objects.all()
    serializer_class = ParentSerializer
以上代码运行良好。如果调用父api,我能够得到正确的响应

Parentapi响应:

[
    {
        "ptid": 1,
        "student": [
            {
                "stid": 1,
                "marks": [
                    {
                        "Marksid": 1,
                        "maths": 100,
                        "physics": 100,
                        "science": 123,
                        "stid": 1
                    }
                ],
                "stname": "Nainika",
                "ptid": 1
            }
        ],
        "ptname": "Sabish"
    }
]
[
    {
        "stid": 1,
        "marks": [
            {
                "Marksid": 1,
                "maths": 100,
                "physics": 100,
                "science": 123,
                "stid": 1
            }
        ],
        "stname": "Nainika",
        "ptid": 1
    }
]
学生回答:

[
    {
        "ptid": 1,
        "student": [
            {
                "stid": 1,
                "marks": [
                    {
                        "Marksid": 1,
                        "maths": 100,
                        "physics": 100,
                        "science": 123,
                        "stid": 1
                    }
                ],
                "stname": "Nainika",
                "ptid": 1
            }
        ],
        "ptname": "Sabish"
    }
]
[
    {
        "stid": 1,
        "marks": [
            {
                "Marksid": 1,
                "maths": 100,
                "physics": 100,
                "science": 123,
                "stid": 1
            }
        ],
        "stname": "Nainika",
        "ptid": 1
    }
]

我的问题是如何在学生api中获取父数据?

您只需要做一些类似于您已经做过的事情(
marks=MarksSerializer(…)
),通过在学生模型中添加父模型的序列化器作为字段。我不明白。你能添加示例代码吗?我不明白你为什么不明白。查看您的代码,您已经在使用嵌套序列化程序。在我看来,给出你已经拥有的示例代码似乎很奇怪。无论如何,请参阅此处的文档