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多线程实例教程
Sep 06 Python
Python with用法实例
Apr 14 Python
Python MySQLdb Linux下安装笔记
May 09 Python
解析Python中while true的使用
Oct 13 Python
Python机器学习之SVM支持向量机
Dec 27 Python
Tensorflow之Saver的用法详解
Apr 23 Python
Python3.4学习笔记之类型判断,异常处理,终止程序操作小结
Mar 01 Python
Python PIL读取的图像发生自动旋转的实现方法
Jul 05 Python
Django工程的分层结构详解
Jul 18 Python
python类的实例化问题解决
Aug 31 Python
关于多元线性回归分析——Python&SPSS
Feb 24 Python
matplotlib bar()实现百分比堆积柱状图
Feb 24 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
PHP采集类Snoopy抓取图片实例
2014/06/19 PHP
Yii2使用小技巧之通过 Composer 添加 FontAwesome 字体资源
2014/06/22 PHP
详解Grunt插件之LiveReload实现页面自动刷新(两种方案)
2015/07/31 PHP
IE无法设置短域名下Cookie
2010/09/23 Javascript
JavaScript检查某个function是否是原生代码的方法
2014/08/20 Javascript
jquery实现华丽的可折角广告代码
2015/09/02 Javascript
Nodejs Express4.x开发框架随手笔记
2015/11/23 NodeJs
Json对象和字符串互相转换json数据拼接和JSON使用方式详细介绍(小结)
2016/10/25 Javascript
javascript数组去重常用方法实例分析
2017/04/11 Javascript
基于vuejs实现一个todolist项目
2017/04/11 Javascript
详解Vue 事件驱动和依赖追踪
2017/04/22 Javascript
详解vue.js 开发环境搭建最简单攻略
2017/06/12 Javascript
Ajax高级笔记 JavaScript高级程序设计笔记
2017/06/22 Javascript
AugularJS从入门到实践(必看篇)
2017/07/10 Javascript
JavaScript实现简单的双色球(实例讲解)
2017/07/31 Javascript
原生JavaScript实现todolist功能
2018/03/02 Javascript
JS 实现分页打印功能
2018/05/16 Javascript
详解webpack引入第三方库的方式以及注意事项
2019/01/15 Javascript
[01:45:05]VGJ.T vs Newbee Supermajor 败者组 BO3 第二场 6.6
2018/06/07 DOTA
[02:51]2018年度DOTA2最佳中单位选手-完美盛典
2018/12/17 DOTA
python算法学习之桶排序算法实例(分块排序)
2013/12/18 Python
Python 装饰器使用详解
2017/07/29 Python
Python实现的栈(Stack)
2018/01/26 Python
Python对List中的元素排序的方法
2018/04/01 Python
分析经典Python开发工程师面试题
2019/04/08 Python
python实现简易学生信息管理系统
2020/04/05 Python
python SVD压缩图像的实现代码
2019/11/05 Python
Python实现电视里的5毛特效实例代码详解
2020/05/15 Python
使用keras实现孪生网络中的权值共享教程
2020/06/11 Python
python 5个实用的技巧
2020/09/27 Python
详解BeautifulSoup获取特定标签下内容的方法
2020/12/07 Python
升旗仪式主持词
2014/03/19 职场文书
放飞中国梦演讲稿
2014/04/23 职场文书
电气工程及其自动化专业毕业生自荐信
2014/06/21 职场文书
大学生求职简历自我评价
2015/03/02 职场文书
电脑无法安装Windows 11怎么办?无法安装Win11的解决方法
2021/11/21 数码科技