Django Rest框架关系属性

2024-09-27 00:22:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在努力寻找进入DRF的途径,却无法将相关数据导入我的端点

型号.py

class ChapterMark(models.Model):
    title           = models.CharField(max_length=100, null=True)
    episode         = models.ForeignKey(Episode, on_delete=models.CASCADE)
    start_time      = models.CharField(max_length=20)


class Episode(models.Model):
    title           = models.CharField(max_length=100, blank=False)
    show            = models.ForeignKey(Show, on_delete=models.PROTECT)

序列化程序.py

class ChapterMarkSerializer(serializers.ModelSerializer):
    class Meta:
        model = ChapterMark
        exclude = ('')

class EpisodeSerializer(serializers.ModelSerializer):
    chapters = ChapterMarkSerializer(source='id')

    class Meta:
        model = Episode
        depth = 1

我得到的错误是

Got AttributeError when attempting to get a value for field start_time on serializer ChapterMarkSerializer. The serializer field might be named incorrectly and not match any attribute or key on the int instance. Original exception text was: 'int' object has no attribute 'start_time'.

我的猜测是,通过source='id'建立的关系根本不起作用,但到目前为止,我发现的一切都指向这样做

章节和剧集之间有一种多对一的关系(因此每一集都有许多章节)。我肯定我错过了一个重要的部分


Tags: pymodeltimetitleonmodelsstartlength
1条回答
网友
1楼 · 发布于 2024-09-27 00:22:26

要获得反向关系对象,请使用chaptermark_set作为章节源字段,同时不要忘记添加many=True,因为插曲可以有多个章节:

class EpisodeSerializer(serializers.ModelSerializer):
    chapters = ChapterMarkSerializer(source='chaptermark_set', many=True)

    class Meta:
        model = Episode
        depth = 1 

相关问题 更多 >

    热门问题