我正在开发我的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