django 实现手动存储文件到model的FileField


Posted in Python onMarch 30, 2020

通过POST请求,上传了文件,想要将文件存储在模型的FileField中

request.FILES中的值均为UploadedFile类文件对象

表单上传的文件对象存储在类字典对象request.FILES中,表单格式需为multipart/form-data

FieldFile.save(name, content, save=True)

name:命名文件名

content:必须是django.core.files.File或django.core.files.base.ContentFile二者之一的一个实例

from django.core.files.base import ContentFile
#from django.core.files import File


photo=request.FILES.get('file','')
user=UserProfile.objects.get(id=uid)
if photo: 
 file_content = ContentFile(photo.read()) #创建ContentFile对象
 #file_content = File(photo.read()) #创建File对象
 user.photo.save(photo.name, file_content) #保存文件到user的photo域
 user.save()

补充知识:python-ContentFile未保存在Django模型FileField中

在我的Django模型中将字符串另存为文件时,我遇到了问题,因为每当我尝试取回数据时,都会给我一个ValueError(“属性没有关联的文件”).

详细信息如下:

模型:

class GeojsonData(models.Model):
dname = models.CharField(max_length=200, unique=True)
gdata = models.FileField(upload_to='data')
def __str__(self):
 return self.dname

保存数据的代码:

cf = ContentFile(stringToBeSaved)
gj = GeojsonDatua(dname = namevar, gdata = cf)
gj.save()

尝试读取数据的代码:

def readGeo(data):
 f = GeojsonData.objects.all().get(id=data.id).gdata
 f.open(mode ='rb')
 geo = f.read()
 return geo

追溯:

File "C:\Python\Python36-32\lib\site-packages\django\core\handlers\exception.py" in inner
41. response = get_response(request)

File "C:\Python\Python36-32\lib\site-packages\django\core\handlers\base.py" in _get_response
187. response = self.process_exception_by_middleware(e, request)

File "C:\Python\Python36-32\lib\site-packages\django\core\handlers\base.py" in _get_response
185. response = wrapped_callback(request, *callback_args, **callback_kwargs)

File "C:\Python\Python36-32\lib\site-packages\django\contrib\auth\decorators.py" in _wrapped_view
23. return view_func(request, *args, **kwargs)

File "C:\app\views.py" in mapa
80. geostr = app.readGeo.readGeo(d)

File "C:\app\readGeo.py" in readGeo
6. f.open(mode ='rb')

File "C:\Python\Python36-32\lib\site-packages\django\db\models\fields\files.py" in open
80. self._require_file()

File "C:Python\Python36-32\lib\site-packages\django\db\models\fields\files.py" in _require_file
46. raise ValueError("The '%s' attribute has no file associated with it." % self.field.name)

Exception Type: ValueError at /app/map/1
Exception Value: The 'gdata' attribute has no file associated with it.

解决方法:

您需要将ContentFile另存为实际文件.而不是直接将其分配给该字段,您应该调用该字段的save方法并将其传递给:

gj = GeojsonDatua(dname = namevar)
gj.gdata.save('myfilename', cf)

参见the docs.

另请注意,如果您始终像这样创建gdata字段,则可能根本就不需要FileField.也许改用TextField.

以上这篇django 实现手动存储文件到model的FileField就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python实现提取文章摘要的方法
Apr 21 Python
用Python遍历C盘dll文件的方法
May 06 Python
Python元组及文件核心对象类型详解
Feb 11 Python
python3实现小球转动抽奖小游戏
Apr 15 Python
Django 配置多站点多域名的实现步骤
May 17 Python
vim自动补全插件YouCompleteMe(YCM)安装过程解析
Oct 21 Python
numpy.ndarray 实现对特定行或列取值
Dec 05 Python
python中的 zip函数详解及用法举例
Feb 16 Python
python去除删除数据中\u0000\u0001等unicode字符串的代码
Mar 06 Python
jupyter notebook 多行输出实例
Apr 09 Python
深入了解Python装饰器的高级用法
Aug 13 Python
python 利用zmail库发送邮件
Sep 11 Python
解决django FileFIELD的编码问题
Mar 30 #Python
Python动态导入模块:__import__、importlib、动态导入的使用场景实例分析
Mar 30 #Python
Django 删除upload_to文件的步骤
Mar 30 #Python
python with语句的原理与用法详解
Mar 30 #Python
对django 2.x版本中models.ForeignKey()外键说明介绍
Mar 30 #Python
Python进程的通信Queue、Pipe实例分析
Mar 30 #Python
基于Django OneToOneField和ForeignKey的区别详解
Mar 30 #Python
You might like
Zend引擎的发展 [15]
2006/10/09 PHP
php array_push()数组函数:将一个或多个单元压入数组的末尾(入栈)
2011/07/12 PHP
浅谈PHP中单引号和双引号到底有啥区别呢?
2015/03/04 PHP
PHP里的单例类写法实例
2015/06/25 PHP
从JavaScript 到 JQuery (1)学习小结
2009/02/12 Javascript
原生Js页面滚动延迟加载图片实现原理及过程
2013/06/24 Javascript
仿当当网淘宝网等主流电子商务网站商品分类导航菜单
2013/09/25 Javascript
jquery next nextAll nextUntil siblings的区别介绍
2013/10/05 Javascript
关于JS变量和作用域详解
2016/07/28 Javascript
js中常用的Tab切换效果(推荐)
2016/08/30 Javascript
在iframe中使bootstrap的模态框在父页面弹出问题
2017/08/07 Javascript
vue中的数据绑定原理的实现
2018/07/02 Javascript
从理论角度讨论JavaScript闭包
2019/04/03 Javascript
微信小程序实现侧边分类栏
2019/10/21 Javascript
Vue项目配置跨域访问和代理proxy设置方式
2020/09/08 Javascript
python使用PyFetion来发送短信的例子
2014/04/22 Python
Python的Django框架中settings文件的部署建议
2015/05/30 Python
使用Python多线程爬虫爬取电影天堂资源
2016/09/23 Python
定制FileField中的上传文件名称实例
2017/08/23 Python
Python中将dataframe转换为字典的实例
2018/04/13 Python
Linux下远程连接Jupyter+pyspark部署教程
2019/06/21 Python
Python pickle模块实现对象序列化
2019/11/22 Python
python2和python3哪个使用率高
2020/06/23 Python
Python Process创建进程的2种方法详解
2021/01/25 Python
Oracle的内存结构(Memory structures)
2015/06/10 面试题
三个Unix的命令面试题
2015/04/12 面试题
自动化专业个人求职信范文
2013/12/30 职场文书
对祖国的寄语大全
2014/04/11 职场文书
教师遵守党的政治纪律情况对照检查材料
2014/09/26 职场文书
2014年德育工作总结
2014/11/20 职场文书
社区端午节活动总结
2015/02/11 职场文书
4S店销售内勤岗位职责
2015/04/13 职场文书
闪闪的红星观后感
2015/06/08 职场文书
收入证明范本
2015/06/12 职场文书
经营场所证明范本
2015/06/19 职场文书
导游词之五台山
2019/10/11 职场文书