如何在没有主机的情况下序列化文件



我正在开发我的Django(DRF(应用程序。

我有一个用户头像

class CustomUser(AbstractBaseUser, PermissionsMixin):
avatar = models.ImageField(upload_to='avatars/', blank=True)
...

我想序列化化身字段:

class CustomUserSerializer(serializers.ModelSerializer):
avatar = serializers.FileField(use_url=False, required=False)
class Meta:
model = CustomUser
fields = [
'avatar',
...
]

当前结果为"avatar": "avatars/ZZZ.png"

如何获取"avatar": "media/avatars/ZZZ.png"???(正确的方法是什么(

保存的文件位置为http://localhost:6060/media/avatars/<文件名>。png

我还没有处理过序列化的图像字段。下面是我的解决方案,不知道是否有更好的方法。您可以覆盖序列化程序的to_representation方法来实现它,如下所示。

class CustomUserSerializer(serializers.ModelSerializer):
avatar = serializers.FileField(use_url=False, required=False)
class Meta:
model = CustomUser
fields = [
'avatar',
...
]
def to_representation(self, instance):
resp = super().to_representation(instance)
resp['avatar'] = f'media/{resp["avatar"}'
return resp

最新更新