代码之家  ›  专栏  ›  技术社区  ›  Justin Dearing

创建具有两级父表的django rest framework视图集

  •  0
  • Justin Dearing  · 技术社区  · 6 年前

    • 部门
    • 课程

    A CourseInstance 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)
    

    我想创建一个 课程实例 包括部门名称。我可以用 SlugField

    课程=serializers.SlugRelatedField( 多=假, 只读=假, slug\u field='课程编号', 查询集=models.Course.objects.all() )

    class Meta:
        model = models.Course
        fields = (
            'id', 
            #'department',
            'course', 
            'start_date',
            'end_date',
        )
    

    我不知道该怎么做。

    0 回复  |  直到 6 年前
        1
  •  1
  •   henriquesalvaro    6 年前

    source 参数添加到序列化程序字段,例如,如果要添加 department_name 给你的 CourseInstanceSerializer department_name = serializers.CharField(source='course.department.name') ,或者如果您想获得可以使用的部门信息 department = DepartmentSerializer(source='course.department') .

    推荐文章