5

Pythonで生成された大きなデータセットをDjangoモデルに保存したいと思います。私のアイデアは、データを文字列にピクルスして、モデルのFileFieldにアップロードすることでした。私のdjangoモデルは次のとおりです。

#models.py
from django.db import models

class Data(models.Model):
    label = models.CharField(max_length=30)
    file = models.FileField(upload_to="data")

私のPythonプログラムでは、次のことを実行したいと思います。

import random, pickle

data_entry = Data(label="somedata")
somedata = [random.random() for i in range(10000)]
# Next line does NOT work 
#data_entry.file.save(filename, pickle.dumps(somedata))

パラメータで定義されたパスを保持するために保存するsomedata最後の行をどのように変更する必要がありますか?fileupload_to

4

5 に答える 5

1

データベースでは、ファイル属性はファイルへの単なるパスです。したがって、実際のアップロードを行っていないため、ファイルをディスクに保存してから、パスをデータベースに保存する必要があります。

f = open(filename, 'w')
pickle.dump(somedata, f)
f.close()
data_entry.file=filename
data_entry.save()
于 2009-05-11T13:46:38.690 に答える
0

データをテキストフィールドに保存したほうがいいのではないでしょうか。結局のところ、これはファイルのアップロードではありません。

于 2009-05-11T12:40:01.627 に答える
0

私はこれを行ったことがありませんが、関連するコードを少し読んだことに基づいて、django.core.files.base.ContentFileのインスタンスを作成し、それをフィールドの値として割り当てることから始めます。

于 2009-05-11T15:21:23.233 に答える
-3

注:以下の他の回答とコメントを参照してください-古い情報と壊れたリンクは削除されました(一度受け入れられた回答は削除できません)。

Marty Alchin は、Pro Django の第 3 章でこれに関するセクションを持っています

于 2009-07-08T10:21:40.973 に答える