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')