StringRelatedField无法按预期工作

时间:2018-08-05 06:46:48

标签: django django-rest-framework django-serializer

我有模特,

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

一切似乎都很好,但是我的回应显示出一些奇怪的地方 回应
这是RESPONSE IMAGE 响应文章显示错误的输出

2 个答案:

答案 0 :(得分:2)

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

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

    class Meta:
        model = Reporter
        fields = '__all__'

答案 1 :(得分:1)

由于 article_set 反向关系,因此应在 {{ 1}}

many=True


From official doc of DRF

  

序列化多个对象

     

序列化查询集或列表   对象而不是单个对象实例,您应该传递   实例化序列化程序时带有StringRelatedField()标志。