Django - преобразование двоичного потока в изображение - PullRequest
1 голос
/ 17 января 2020

Я пытаюсь получить изображение из URL и вернуть его в ModelAdmin, чтобы отобразить его в новом столбце таблицы.

Я попробовал следующий код в файле admin.py:

def new_field(self, obj): r = requests.get('https://abcd.com/image') return r.content

Код не дает мне никакой ошибки, но вместо самой картинки возвращает длинную двоичную строку.

Как передать само изображение или преобразовать двоичное содержимое изображения?

Ответы [ 2 ]

2 голосов
/ 17 января 2020

Вы можете использовать NamedTemporaryFile [GitHub] здесь. Например:

from django.core.files import File
from django.core.files.temp import <b>NamedTemporaryFile</b>

def store_image_from_source(self, obj):
    img = NamedTemporaryFile()
    r = requests.get('https://abcd.com/image')
    img.write(r.content)
    img.flush()
    file = File(img)
    obj.my_img_attr.save(<i>'filename.jpeg'</i>, file, save=True)

Здесь 'filename.jpeg', таким образом, является именем файла, как если бы вы загрузили файл с таким именем с ModelForm.

2 голосов
/ 17 января 2020

Вам не нужно загружать изображение, если вы не только показываете его.

def new_field(self, obj):
    url = 'https://abcd.com/image'
    return '<img src="{}" />'.format(url)

new_field.allow_tags = True # it is important!!!

...