Django Channels полный путь к изображению

Если я хочу получить полный путь к изображению в django rest, мне просто нужно написать что-то вроде этого:

def get(self, request)
     qs = SomeModel.objects.all()
     serializer = SomeSerializer(qs, many=True, context={'request': request})
     return Response(serializer.data)
     

И тогда результат будет

{
      "image": "http://127.0.0.1:8000/media/someimg.png"
}

Но не существует request django channels. Я знаю, что есть self.scope, но он не может быть использован как request. Есть ли возможность получить request или даже какой-то класс с функцией build_absolute_uri() внутри consumer?

Вот некоторые из моих кодов:

Потребители:

# Receive message from WebSocket
def receive(self, text_data):
    text_data_json = json.loads(text_data)
    message = text_data_json['message']

    user = self.scope['user']
    chat_room = ChatRoom.objects.get(pk=self.room_name)
    message = Message.objects.create(author=user, chat_room=chat_room, content=message).pk

    # Send message to room group
    async_to_sync(self.channel_layer.group_send)(
        self.room_group_name,
        {
            'type': 'chat_message',
            'message': message
        }
    )

# Receive message from room group
def chat_message(self, event):
    message = event['message']
    serializer = WSMessageSerializer(Message.objects.get(pk=message))
    # Send message to WebSocket
    self.send(text_data=json.dumps(serializer.data))

WSMessageSerializer:

 class WSMessageSerializer(serializers.ModelSerializer):
     author = FriendSerializer()

     class Meta:
         model = Message
         fields = ['id', 'author', 'content', 'created_at']

FriendSerializer:

class FriendSerializer(serializers.ModelSerializer):

     class Meta:
         model = get_user_model()
         fields = ['id',
                   'username',
                   'first_name',
                   'last_name',
                   'full_name',
                   'pfp']
Вернуться на верх