Django 如何使用drf序列化程序将数据序列化为json
我有如下数据模型:Django 如何使用drf序列化程序将数据序列化为json,django,django-rest-framework,Django,Django Rest Framework,我有如下数据模型: from django.db import models class Student(models.Model): first_name = models.CharField(max_length=50) last_name = models.CharField(max_length=50) email = models.EmailField() def __str__(self): return self.first_n
from django.db import models
class Student(models.Model):
first_name = models.CharField(max_length=50)
last_name = models.CharField(max_length=50)
email = models.EmailField()
def __str__(self):
return self.first_name + ' ' + self.last_name
class Course(models.Model):
name = models.CharField(max_length=255)
description = models.TextField()
start_date = models.DateField(null=True)
end_date = models.DateField(null=True)
def __str__(self):
return self.name
class CourseParticipant(models.Model):
course = models.ForeignKey(Course, related_name='courses', on_delete=None)
student = models.ForeignKey(Student, related_name='students', on_delete=None)
completed = models.BooleanField(null=True, default=False)
def __str__(self):
return self.course
我有一些序列化程序,如:
class CourseSerializer(serializers.ModelSerializer):
class Meta:
model = Course
fields = ('name', 'end_date', 'start_date')
我需要返回json格式的数据,如:
{
"courses": [
{
"name": "Math",
"end_date": "2019-06-26",
"start_date": "2019-06-26",
"participant_students_count: 10
}
]
}
如何获取“参与者\学生\计数”并将其数据以json格式与其他字段一起返回
谢谢你的帮助 您可以使用DRF序列化程序字段。另外,请参阅关于如何跟踪外键关系的访问
从rest\u框架导入序列化程序
类CourseSerializer(serializers.ModelSerializer):
参与者\学生\计数=序列化程序。SerializerMethodField()
类元:
模型=课程
字段=('name'、'end\u date'、'start\u date'、'participant\u students\u count')
def get_参与者_学生_计数(自我、obj):
return obj.courseparticipant\u set.count()
class CourseSerializer(serializers.ModelSerializer):
participant_students_count = serializers.SerializerMethodField()
def get_participant_students_count(self, obj):
return CourseParticipant.objects.filter(course=obj).count()
class Meta:
model = Course
fields = ('name', 'end_date', 'start_date', 'participant_students_count')