Как сериализовать файл без хоста?
Я работаю над своим приложением 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/<file_name>.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