Невозможно загрузить изображение в поле 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/")
Вернуться на верх