首页 > 解决方案 > 当在 DRF 中接收到图像的 URL 时,如何将图像转换为“InMemoryUploadedFile”?

问题描述

我有一个显示图像 URL 的响应,但是当我尝试发送 PUT/PATCH 请求时,它会引发错误:- 这是响应:-

{
    "floorplan": {
        "floor": 32,
        "image": "http://127.0.0.1:8000/media/floorplans/71d3e751-d38f-416f-ac22-d6ddb3fa3541.jpg"
    }
}

发送 PUT 请求时:-

{
    "floorplan": {
        "image": [
            "The submitted data was not a file. Check the encoding type on the form."
        ]
    }
}

但是当我尝试发送一个上传了实际图像的请求时,它工作正常。

这是我的序列化程序:-

class NestedFloorplanSerializer(serializers.ModelSerializer):
    class Meta:
        model = FloorPlan
        fields = (
            'floor',
            'image',
        )

我尝试覆盖the to_internal_value在实际上传的图像中看到的内容,它属于以下类型:-<InMemoryUploadedFile: floor_1.jpg (image/jpeg)>当发送的 url 比我在中看到的值to_internal_value是这个http://127.0.0.1:8000/media/floorplans/71d3e751-d38f-416f-ac22-d6ddb3fa3541.jpg

我想要做的不是在 to internal_value 中接收到相同的图像 url 时进行验证,或者如果可能将 url 转换为<InMemoryUploadedFile: floor_1.jpg (image/jpeg)>然后返回它?

标签: pythondjangoserializationdjango-rest-framework

解决方案


推荐阅读