Невозможно загрузить изображение в поле ImageField через файл csv
Мое приложение Django:
В моей модели я использую ImageField для разрешения загрузки изображений.
В моем csv-файле у меня есть путь к изображению, например: C:/Users/blah/DjangoProject/abc/abc/csvs/photos/product_1/product-1_1.jpg
В моем представлении csv я получил:
Product.objects.create(product_name=row[0],
slug=row[0].lower().replace(' ', '-'),
product_description=row[1],
price=row[7],
image_1=ImageFile(open(row[8], 'rb')))
Строка[8] содержит путь изображения.
Когда я иду в свой csv.html, используя FileField от Django, чтобы загрузить файл csv, который содержит путь к изображению и информацию о продукте, после загрузки продукт должен быть создан в моей базе данных, изображение также должно быть загружено в файловую систему - не хранясь в базе данных. Вместо этого я получаю следующую ошибку:
OSError at /csvs/ [WinError 123] Синтаксис имени файла, каталога или метки тома неверен: 'C:\Users\blah\DjangoProject\abc\abc\media\photos\products\C:'
Когда я удалил строку image_1 в Product.objects.create(), продукт был загружен и добавлен в базу данных успешно. Если я восстанавливаю строку image_1 в создании объекта, я снова получаю ту же ошибку.
Кто-нибудь знает почему?
Попробуйте это:
Product.objects.create(product_name=row[0],
slug=row[0].lower().replace(' ', '-'),
product_description=row[1],
price=row[7],
image_1=row[8])
Or
from django.core.files import File; Product.objects.create(.....,image_1=File(file=open((row[8], 'rb'))))
Я думаю, что вам просто нужно указать путь к загружаемому изображению. А в вашей модели у вас есть ImagePath с и upload_to вот так:
image_1 = models.ImageField(upload_to="media/styles/")