lord stock
lord stock

Reputation: 1201

Return Full image Url in Django Rest Framework For Image

I am facing problem in returned image url, which is not proper.

My return image URL is
"/media/slider_image/image/slider_image_4ea48daf-477d-4f00-93cb-7ac87c6f4002.JPG",enter image description here

but actual URL expected from serializer is

http://127.0.0.1:8000/media/slider_image/image/slider_image_4ea48daf-477d-4f00-93cb-7ac87c6f4002.JPG

Here is my snippet of my Code that I have tried.

class ListSliderSerializer(SliderSerializers):
    images = serializers.SerializerMethodField('get_images')

    def get_images(self, instance):
        return [slider_image.image.url for slider_image in instance.slider_image.all()]


    class Meta(SliderSerializers.Meta):
        fields = (
            'images',
            'section',
            'tag',
        )

what should i return in

return [slider_image.image.url for slider_image in instance.slider_image.all()]

to get full url for my image?

Upvotes: 0

Views: 1957

Answers (1)

JPG
JPG

Reputation: 88499

You can use the request.build_absolute_uri(...)--(doc) method as

class ListSliderSerializer(SliderSerializers):
    images = serializers.SerializerMethodField('get_images')

    def get_images(self, instance):
        request = self.context["request"]
        return [
            request.build_absolute_uri(slider_image.image.url)
            for slider_image in instance.slider_image.all()
        ]

    class Meta(SliderSerializers.Meta):
        fields = (
            'images',
            'section',
            'tag',
        )

Also note that you must pass request to the serializer as context data

Upvotes: 1

Related Questions