2016-07-14 14 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?ベース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 

その後、I product_imagesのメディアフォルダにあるすべての画像をアップロードしました。

それは非常にうまくいった。

Fileクラスのproduct.image.save()オプションを使用して画像をアップロードしようとしましたが、うまくいきませんでした。

関連する問題