gpt4 book ai didi

python - Django Rest Framework Serializer中,如何获取图片的完整路径?

转载 作者:行者123 更新时间:2023-11-28 17:00:36 25 4
gpt4 key购买 nike

在我的项目中,我想使用 Serializer 类获取图像的完整路径。

当我使用 ViewSet 类时,它似乎得到了正确的结果。但是当使用 APIView 类时,它没有得到我需要的东西。

# the model
class UserAccount(models.Model):
...
icon = models.ImageField(upload_to='icon/user')
# the serializer
class UserSerializer(serialziers.ModelSerializer):
class Meta:
model = UserAccount
fields = (..., 'icon')

使用 View 集

# viewset
class UserViewSet(viewsets.ModelViewSet):
...
serializer_class = UserSerializer

# result
# {..., 'icon': 'http://127.0.0.1:8000/media/icon/user/filename'}

使用API​​View

class UserView(APIView):
...
def get(self, request):
...
userAccount = user.userAccount
serializer = UserSerializer(userAccount)
return Response(serializer.data)

# result
# {..., 'icon': '/media/icon/user/filename'}

我应该怎么做才能在 APIView 中获取图像的完整路径?

最佳答案

您需要使用 SerializerMethodField 添加额外的字段:

class UserSerializer(serializers.ModelSerializer):
icon_url = serializers.SerializerMethodField()

class Meta:
model = UserAccount
fields = (..., 'icon_url')

def get_icon_url(self, user_account):
request = self.context.get('request')
icon_url = user_account.icon.url
return request.build_absolute_uri(icon_url)

并将请求添加到 View 中的上下文:

def get(self, request):
...
userAccount = user.userAccount
serializer = UserSerializer(userAccount, context={'request':request})
return Response(serializer.data)

关于python - Django Rest Framework Serializer中,如何获取图片的完整路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54827145/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com