2016-07-14 81 views
-3

這是我的模特。如何從csv/excel導入django模型中的圖像?

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) 

我知道如何從django模型中的csv導入數據。但我在這裏也有圖像領域。

我可以上傳文件到從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()方法來 保留該文件數據。

需要兩個必需的參數:name是文件的名稱, 內容是包含文件內容的對象。

事情是這樣的:

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類的圖像,但它不適合我。