2016-07-14 4 views
-3

Это моя модель.Как импортировать изображения в модели django из csv/excel?

class Product(models.Model) 
    id = models.AutoField(max_length=10, primary_key=True) 
    name = models.CharField(max_length=60) 
    summary = models.TextField(max_length=200) 
    image = models.FileField(upload_to='product_images', blank=True) 

Я знаю, как импортировать данные из csv в модель django. Но у меня также есть поле для изображений.

Могу ли я загружать файлы в модели из метода добавления данных в модели csv? Как?

Я использую этот метод для их импорта: http://mitchfournier.com/2011/10/11/how-to-import-a-csv-or-tsv-file-into-a-django-model/

У меня есть изображения, сохраненные в папке в моей системе.

+0

Как мы можем ответить, учитывая, что вы ничего нам не сообщили о том, что содержат CSV или как вы их импортируете? –

+0

@ DanielRoseman Вы бы дали ответ, если бы знали, как импортировать изображения в модели. Я не знаю, как импортировать изображения, тогда как я могу сказать вам, как я их импортирую? Это вопрос, не так ли? – TheOddAbhi

+0

№ Что такое «образ», который находится в вашем CSV? Имя файла? URL? Строка данных с кодировкой base-64? У вас уже есть CSV и код для импорта данных, которые вы должны показать. –

ответ

1

FileField - это просто ссылка на файл. Он не помещает файл в базу данных, как иногда ошибочно полагают.

Предполагая, что у вас уже есть код, написанный для чтения через CSV и выбор местоположения файла. Тогда все, что вам нужно сделать, это следовать примеру, приведенной в FileField.save()

Этот метод принимает имя файла и содержимое файла и передает их к классу для хранения поля, затем связывает сохраненный файл с полем модели , Если вы хотите вручную связать данные файла сэкземплярами FileField на вашей модели, метод save() используется для , сохраняя данные файла.

Принимает два обязательных аргумента: имя, которое является именем файла, и содержание, являющееся объектом, содержащим содержимое файла.

Что-то вроде этого:

p = Product() 
p.image.save('name from csv',open('path from csv')) 
+0

Это полезно. Я буду реализовывать, и если это сработает, я выберу ответ. – TheOddAbhi

+0

Не получилось. В любом случае спасибо. Я решил это. – TheOddAbhi

0

Я решил ее сохранения имя изображения в формате CSV и просто загрузив имя в поле, как это:

... 
product.image = "product_images" + namefromcsv 

я загрузил все изображения в папку с носителями внутри product_images.

И это сработало очень хорошо.

Я попытался загрузить изображение с помощью опции product.image.save() с классом File, но это не сработало для меня.