我创建了三个班级 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
答案 0 :(得分:1)
您将不得不使用序列化程序中的method字段,并将其添加为class meta中的exptra字段,以获取完整列表和子类别:
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
同样,您必须与程序有关,才能在程序中同时获取序列化器,并在视图中传递父序列化器中的查询集,该查询集将按照我们在序列化器中的指示获取相关事件数据。