Как сделать тип FILE json сериализуемым

Я пытаюсь отправить json ответ в django, но получаю эту ошибку

TypeError: Объект типа File не является JSON сериализуемым

Ошибка возникает потому, что я использую тип <class 'django.core.files.base.File'> в json-ответе. Как я могу преобразовать его в сериализуемый формат json?

Код:

        user_id = User.objects.get(id=token_data['user_id'])
        all_posts = publicPost.objects.filter(user_id=user_id)
        post_ids = [] 
        for post in all_posts:
            post_ids.append(post.id)
        images = {} 
        for id in post_ids:
            img_obj =  PostImage.objects.filter(post_id=id) 
            imgs = [img_obj[0].image.file] 
            try:
                x = img_obj[0].other_image1.file
                imgs.append(x)
            except ValueError:
                pass
            try:
                x = img_obj[0].other_image2.file
                imgs.append(x)
            except ValueError:
                pass
            try:
                x = img_obj[0].other_image2.file
                print('type', type(x))
                imgs.append(x)
            except ValueError:
                pass 

            images[id] = imgs 
            
        return JsonResponse({'posts': post_ids, 'images': images})

если вам действительно нужно отправить файл в ответе, вы можете попробовать сначала преобразовать его в байты.

images = [bytes(img).decode('utf8') for img in images]

Сериализуйте url, а не изображение:

img_obj[0].image.url

вместо

img_obj[0].image.file
Вернуться на верх