如何在django和djangorestframework中创建序列化程序和视图以创建子类别

时间:2019-04-01 06:55:20

标签: django django-rest-framework

我创建了三个班级 1.程序-父母-文学学士学位(BA) 2.学期-儿童-课程的第一学期-儿童 3.课程-孙子-化学1,学期的孩子

详细信息: 1)该课程将有很多学期,使用外键链接 2)本学期将开设许多课程。

如何在djangorestframework中实现此行为。 1)创建一个学期的课程 2)列出某个计划和一个学期的所有课程

class Programme(models.Model):
     name = models.CharField(max_length=255)
     def __str__(self):
          return self.name


class Semester(models.Model):
     name = models.CharField(max_length=100)
     numeric = models.IntegerField()
     programme = models.ForeignKey(Programme, 
             on_delete=models.CASCADE)

     def __str__(self):
        return self.name

class Course(models.Model):
    name = models.CharField(max_length=200)
    code = models.CharField(max_length=200)
    semester = models.ForeignKey(Semester,
         on_delete=models.CASCADE,related_name='courses')
    internal = models.IntegerField()
    external = models.IntegerField()
    total = models.IntegerField()

    def __str__(self):
        return self.name

1 个答案:

答案 0 :(得分:1)

您将不得不使用序列化程序中的method字段,并将其添加为class meta中的exptra字段,以获取完整列表和子类别:

serializer.py

class courseserializer(serializers.ModelSerializer):
   class Meta:
      model = course
      fields = '__all__'

class semesterserilizer(serializers.ModelSerializer):
   course=serializers.SerializerMethodField()
   class Meta:
      model = course
      fields = ['name','course']
   def get_course(self,obj):
       queryset=course.objects.filter(id=obj.id)
       return courseserializer(queryset,many=True).data

同样,您必须与程序有关,才能在程序中同时获取序列化器,并在视图中传递父序列化器中的查询集,该查询集将按照我们在序列化器中的指示获取相关事件数据。