django - 我如何使用 drf 序列化程序将数据序列化为 json
问题描述
我有如下数据模型:
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
}
]
}
如何获取“participant_students_count”并将其数据以 json 格式与其他字段一起返回。
感谢帮助!
解决方案
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')
推荐阅读
- python - 给定一个包含 X 个浮点数的列表,返回中间 3 个浮点数的平均值和该列表的最低浮点数的元组
- linux - 如何编辑 .gitignore 文件
- drawing - 用于画线模式的 MT4 键盘快捷键
- sql - 如何使用 SQL 中的存储过程制作星形三角形?
- mysql - mysql 在字段中重复值,插入具有新值的新行
- python - *(Tensors 张量的元组,名称 dim,Tensor out)
- amazon-web-services - 在放大删除命令后重新创建 AWS 放大应用程序
- scala - 类型参数子句中的广义约束?
- html - 我怎样才能把第二张图片和按钮(下面)对齐?
- javascript - 尝试在经过一段时间后在 p5.js 中更改数组中椭圆的颜色,但出现错误:“TypeError:颜色不是函数”