Я хочу добавить водяной знак к изображению в django из базы данных, для этого мне нужно получить доступ к имени изображения в строковом формате В настоящее время я использую эту технику
original_pic = Photo.objects.values('original_pic')
image = Image.open(original_pic.values()).convert('RGBA')
но мой 'original_pic' относится к типу словаря, он возвращает данные в QuerySet
<QuerySet [{'original_pic': 'temp4.jpg'}, {'original_pic': 'facebook.jfif'}, {'original_pic': 'html.png'}, {'original_pic': '1001.jpg'}, {'original_pic': '1002.jpg'}, {'original_pic': '1003.jpg'}, {'original_pic': '1005.jpg'}, {'original_pic': '1007.jpg'}, {'original_pic': '1018.jpg'}, {'original_pic': '1009.jpg'}, {'original_pic': '1010.jpg'}, {'original_pic': '1011.jpg'}, {'original_pic': '1012.jpg'}, {'original_pic': '1016.jpg'}, {'original_pic': 'unity.png'}, {'original_pic': 'linkedin1.jpg'}, {'original_pic': 'android.png'}, {'original_pic': '1027.PNG'}, {'original_pic': 'github.jpg'}]>
Я хочу получить данные в формате простой строки
Вы можете использовать values_list
:
original_pic = Photo.objects.values_list('original_pic', flat=True)
Обратите внимание на аргумент flat=True
. Из документов:
If you only pass in a single field, you can also pass in the flat parameter. If True, this will mean the returned results are single values, rather than one-tuples
Мне не на 100% понятно, что вы подразумеваете под простым строковым форматом. Но если вы хотите иметь список строк вашей фотомодели с путем к файлу для FileField/ImageField
, вы можете сделать:
[photo.original_pic.path for photo in Photo.objects.all()]
Я предполагаю, что вы пытаетесь открыть одно изображение. Для этого вам нужно отфильтровать набор запросов Photo
с помощью метода filter()
и получить результат с помощью values_list()
original_pic = Photo.objects.filter(id=photo_id).values_list('original_pic', flat=True)[0]
image = Image.open(original_pic).convert('RGBA')
Если да, используйте ответ @ neverwalkaloner
Это извлекает только данные определенного идентификатора. Что делать, если я хочу получить данные для полного столбца. т.е. original_pic.