在Django Rest框架API中,如何返回用户名而不是id?

2024-09-27 00:19:50 发布

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

这是我的模型

class FollowerModelSerializer(ModelSerializer):
    user = CharField(source='slug')

    class Meta:
        model = Profile
        fields = ['user', 'followers']

这是序列化程序

class FollowerModelViewSet(ModelViewSet):
    queryset = Profile.objects.all()
    serializer_class = FollowerModelSerializer
    allowed_methods = ('GET', 'HEAD', 'OPTIONS')

    def list(self, request, *args, **kwargs):
        self.queryset = self.queryset.filter(id=request.user.id)
        return super(FollowerModelViewSet, self).list(request, *args, **kwargs)

这就是API

以下是回应:

HTTP 200 OK
Allow: GET, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

[
    {
        "user": "pop",
        "followers": [
            1,
            4
        ]
    }
]

问题:它正在返回追随者的ID。我应该如何让它返回追随者的用户名呢


Tags: selfgetrequestargsprofileheadkwargslist
1条回答
网友
1楼 · 发布于 2024-09-27 00:19:50

您可以使用^{} [drf-doc]

class FollowerModelSerializer(ModelSerializer):
    user = CharField(source='slug')
    followers = SlugRelatedField(slug_field='username',
        many=True,
        read_only=True
    )

    class Meta:
        model = Profile
        fields = ['user', 'followers']

因此,这将使用username关系中包含的对象的followers

相关问题 更多 >

    热门问题