首页 > 解决方案 > StringRelatedField 没有按预期工作

问题描述

我有模特,

class Reporter(models.Model):
    name = models.CharField(max_length=50)

    def __str__(self):
        return self.name


class Article(models.Model):
    title = models.CharField(max_length=100)
    reporter = models.ForeignKey(Reporter, on_delete=models.CASCADE)

    def __str__(self):
        return self.title

和序列化器,

class ReporterSerializer(serializers.ModelSerializer):
    article = serializers.StringRelatedField(source='article_set')

    class Meta:
        model = Reporter
        fields = '__all__'

和意见

class ReporterAPI(viewsets.ModelViewSet):
    queryset = Reporter.objects.all()
    serializer_class = ReporterSerializer

一切似乎都很好,但是,我的回复显示了一些奇怪的回复
这是回复图片 回复文章显示错误的输出

标签: djangodjango-rest-frameworkdjango-serializer

解决方案


由于article_set是对象列表,您应该添加many=True参数:

class ReporterSerializer(serializers.ModelSerializer):
    article = serializers.StringRelatedField(source='article_set', many=True)

    class Meta:
        model = Reporter
        fields = '__all__'

推荐阅读