DRF-多くのシリアライズとデシリアライズ

DRF-多くのシリアライズとデシリアライズ

まず、シリアライズ

  • 教室の先生を含め、すべての学生を発見

    • models.py
    from django.db import models
    
    # 学生类
    class Student(models.Model):
    name = models.CharField(max_length=32)
    
    # 老师类
    class Teacher(models.Model):
    name = models.CharField(max_length=32)
    students = models.ManyToManyField(to='Student',related_name='teacher')
    • serializer.py
    from rest_framework import serializers
    from . import models
    
    # 老师序列化
    class TeacherSerializer(serializers.ModelSerializer):
    class Meta:
    model = models.Teacher
    fields = ('id','name')
    # 学生序列化
    class StudentSerializer(serializers.Serializer):
    name = serializers.CharField(max_length=32)
    teacher = TeacherSerializer(many=True,read_only=True)
    • views.py
     # 查询所有的学生对应的老师
     studentobj = models.Student.objects.all()
     stu = StudentSerializer(studentobj,many=True)
     return Response(stu.data)
    • 结果
    # 结果
    [
        {
            "name": "小张",
            "teacher": [
                {
                "id": 3,
                "name": "郑老师"
                }
            ]
        },
        {
            "name": "小李",
            "teacher": [
            {
                "id": 4,
                "name": "董老师"
                }
            ]
        },
        {
        "name": "小夏",
        "teacher": []
        },
        {
        "name": "小徐",
        "teacher": []
        }
    ]
  • 学生の教育を含め、すべての教師を発見

    • models.py

      from django.db import models
      
      # 学生类
      class Student(models.Model):
      name = models.CharField(max_length=32)
      
      # 老师类
      class Teacher(models.Model):
      name = models.CharField(max_length=32)
      students = models.ManyToManyField(to='Student',related_name='teacher')
    • serializer.py

      from rest_framework import serializers
      from . import models
      
      # 学生序列化
      class StudentSerializer(serializers.ModelSerializer):
      class Meta:
      model = models.Teacher
      fields = ('id','name')
      # 老师序列化
      class TeacherSerializer(serializers.Serializer):
      name = serializers.CharField(max_length=32)
      students = TeacherSerializer(many=True,read_only=True)
    • views.py

      teacherobj = models.Teacher.objects.all()
      teach = TeacherSerializer1(teacherobj,many=True)
      return Response(teach.data)
    • 结果

      # 结果
      [
          {
              "name": "王老师",
              "students": []
              },
              {
              "name": "刘老师",
              "students": []
              },
          {
              "name": "郑老师",
              "students": [
                  {
                      "id": 1,
                      "name": "小张"
                  }
              ]
          },
          {
              "name": "董老师",
              "students": [
                  {
                  "id": 2,
                  "name": "小李"
                  }
              ]
          }
      ]

おすすめ

転載: www.cnblogs.com/wuxiaoshi/p/11831466.html