django-rest-framework - 创建具有两级父表的django rest框架ViewSet
问题描述
我有以下课程目录模型:
- 部门
- 课程
- 课程实例
- 课程实例时间
ACourseInstance
是“课程”的运行,它是课程目录中的一个条目。Department
每门课程都有其所属的外键。每周一次的课程会议都存储在CourseInstanceTime
. 以下简化模型:
class Department(models.Model):
"""Academic Department"""
name = models.CharField(max_length=30, unique=True)
class Course(models.Model):
"""Courses in the course catalog"""
course_name = models.CharField(max_length=30, unique=True)
department = models.ForeignKey(Department, on_delete=models.PROTECT)
course_number = models.DecimalField(decimal_places=0, max_digits=3, unique=True)
class Meta:
unique_together = (("department", "course_number"),)
class CourseInstance(models.Model):
"""A Scheduled running of a particular coursee"""
start_date = models.DateField(help_text='Course Start Date', verbose_name='Start Date')
end_date = models.DateField(help_text='Course Start Date', verbose_name='Start Date')
course = models.ForeignKey(Course, on_delete=models.deletion.CASCADE)
class CourseInstanceTime(models.Model):
day = models.CharField(max_length=3)
start_time = models.TimeField()
end_time = models.TimeField()
course_instance = models.ForeignKey(CourseInstance, on_delete=models.deletion.CASCADE)
我想创建一个CourseInstance
包含部门名称的视图集。我可以使用 aSlugField
来包含课程编号,如下所示:
类 CourseInstanceSerializer(serializers.ModelSerializer): course = serializers.SlugRelatedField( many = False, read_only = False, slug_field = 'course_number', queryset = models.Course.objects.all())
class Meta:
model = models.Course
fields = (
'id',
#'department',
'course',
'start_date',
'end_date',
)
我不知道如何做到这一点。
解决方案
您可以将参数传递给您source
的序列化器字段,例如,如果您想向您的.department_name
CourseInstanceSerializer
department_name = serializers.CharField(source='course.department.name')
department = DepartmentSerializer(source='course.department')
推荐阅读
- php - Woocommerce:如何为 iframe 形成动态链接
- javascript - Set size of window in Jest and jest-dom and jsdom
- android - 期待此活动的 'android:screenOrientation="unspecified"' 或 '"fullSensor"'
- wordpress - 是否可以在不购买新主机的情况下将我的 WordPress 域移至 .com
- python - Mutliprocessing.starmap : 过滤
- git - Git 和 Github 存储库名称
- ios - 谷歌身份验证失败时iOS应用被拒绝
- r - 将(许多)条件列表传递给R中的if语句
- php - Yii api 路由返回 404
- javascript - 无法在 IE11 中将 HTMLDivElement 附加到 HTMLUnknownElement