Всем здравствуйте!
У меня есть несколько сериализаторов:
User_avatar_serializer.py:
from rest_framework import serializers
from users.models import UserAvatar:
class UserAvatarSerializer(serializers.ModelSerializer):
class Meta:
model = UserAvatar
fields = [
"local_url",
]
def to_representation(self, instance):
ret = super().to_representation(instance)
return ret["local_url"]
User_serializer.py:
from rest_framework import serializers
from api.users.serializers.user_avatar_serializer import UserAvatarSerializer
from users.models import User
class UserShortSerializer(serializers.ModelSerializer):
avatar = UserAvatarSerializer(required=False, read_only=True)
class Meta:
model = User
fields = [
"id",
"username",
"first_name",
"last_name",
"avatar",
"first_time",
]
Если я через вьюшку обращаюсь к сериализатору UserShortSerializer, то выдача ссылки на аватар через внутренний вызов UserAvatarSerializer следующая:
...
"avatar": "127.0.0.1:8000/media/user/avatar/1bbcd0e1-b7a8-44f...",
...
Если же я обращаюсь внутри других сериализаторов не связанных с пользователями и мне необходимо в ответе выдать инфо по запрашиваемому пользователю, то я переписываю функцию to_representation, на примере:
def to_representation(self, instance):
...
ret["participants_info"] = {
...
"avatars": UserAvatarSerializer(instance=avatar_list, many=True, required=False).data,
...
}
return ret
В этом случае я получаю при выводе:
...
"avatars": [
"/media/home/app/marathon/static/images/bg01.jpg"
],
...
Не понимаю, почему во второй выдаче отсуствует "
127.0.0.1:8000"?
Понятно, что в первом варианте я перенаправляю поле аватара на сериализатор UserAvatarSerialize:
avatar = UserAvatarSerializer(required=False, read_only=True)
А во втором вызываю сериализатор вот так:
UserAvatarSerializer(instance=avatar_list, many=True, required=False).data,
Как мне в итоге сделать так, чтобы в обоих случаях вначале писалось доменное имя?