Как сериализовать файл без хоста?

Я работаю над своим приложением 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
Вернуться на верх