我想将用 Python 生成的大型数据集存储在 Django 模型中。我的想法是将数据 pickle 为一个字符串并将其上传到我的模型的 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
存储在 file
中以保留使用 upload_to
参数定义的路径?
最佳答案
根据问题的答案,我想出了以下解决方案:
from django.core.files.base import ContentFile
import pickle
content = pickle.dumps(somedata)
fid = ContentFile(content)
data_entry.file.save(filename, fid)
fid.close()
所有这些都是在服务器端完成的,并且不允许用户上传 pickle 。我对其进行了测试,一切正常,但我愿意接受任何建议。
关于python - 如何将 pickle 数据上传到 django FileField?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/847904/