如何将pickle数据上传到django FileField?

bte*_*tel 5 python django upload file pickle

我想在Django模型中存储用Python生成的大型数据集.我的想法是将数据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")
Run Code Online (Sandbox Code Playgroud)

在我的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))
Run Code Online (Sandbox Code Playgroud)

如何somedatafile保留使用upload_to参数定义的路径时修改要存储的最后一行?

bte*_*tel 9

根据问题的答案,我提出了以下解决方案:

from django.core.files.base import ContentFile
import pickle

content = pickle.dumps(somedata)
fid = ContentFile(content)
data_entry.file.save(filename, fid)
fid.close()
Run Code Online (Sandbox Code Playgroud)

所有这些都在服务器端完成,并且不允许用户上传pickles.我测试了它并且它工作正常,但我对任何建议持开放态度.


Dav*_*itt -3

注意:请参阅下面的其他答案和评论- 旧信息和损坏的链接已删除(无法删除曾经接受的答案)。

Marty Alchin 在 Pro Django 第 3 章中有一节介绍了这一点,请在此处查看