Как сохранить или загрузить изображение из каталога LOCAL в поле ImageField объекта базы данных в DJANGO
я пытался создать несколько продуктов в проекте ecommerce на django и у меня был готов файл данных и я просто хотел в цикле перебросить данные и сохранить в базе данных с помощью Product.objects.create(image='', ...)
но я не мог загрузить изображения из локальной директории в базу данных!!!
я пробовал эти способы:
1- первая попытка:
with open('IMAGE_PATH', 'rb') as f:
image = f.read()
Product.objects.create(image=image)
не работает!!!
2- вторая попытка:
image = open('IMAGE_PATH', 'rb')
Product.objects.create(image=image)
3- третья попытка:
module_dir = dir_path = os.path.dirname(os.path.realpath(__file__))
for p in products:
file_path = os.path.join(module_dir, p['image'])
Product.objects.create()
product.image.save(
file_path,
File(open(file_path, 'rb'))
)
product.save()
🦋 Бабочка 🦋
После некоторых поисков я нашел ответ. Код, который нужно использовать, будет выглядеть следующим образом:
from django.core.files import File
for p in products:
product = Product.objects.create()
FILE_PATH = p['image']
local_file = open(f'./APP_NAME/{FILE_PATH}', "rb")
djangofile = File(local_file)
product.image.save('FILE_NAME.jpg', djangofile)
local_file.close()
from django.core.files import File
import urllib
result = urllib.urlretrieve(image_url) # image_url is a URL to an image
model_instance.photo.save(
os.path.basename(self.url),
File(open(result[0], 'rb'))
)
self.save()
Получил ответ из здесь