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 相关文章推荐
深入讲解Java编程中类的生命周期
Feb 05 Python
python开发之str.format()用法实例分析
Feb 22 Python
Python中的命令行参数解析工具之docopt详解
Mar 27 Python
详解python中的 is 操作符
Dec 26 Python
Python实现读取txt文件并转换为excel的方法示例
May 17 Python
python 实现提取某个索引中某个时间段的数据方法
Feb 01 Python
Python将字符串常量转化为变量方法总结
Mar 17 Python
python实现简单日志记录库glog的使用
Dec 13 Python
Python获取二维数组的行列数的2种方法
Feb 11 Python
Python MOCK SERVER moco模拟接口测试过程解析
Apr 13 Python
Python自定义聚合函数merge与transform区别详解
May 26 Python
pandas提升计算效率的一些方法汇总
May 30 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
Memcache 在PHP中的使用技巧
2010/02/08 PHP
php自定义错误处理用法实例
2015/03/20 PHP
Zend Framework入门教程之Zend_View组件用法示例
2016/12/09 PHP
php时间戳转换代码详解
2019/08/04 PHP
javascript在一段文字中的光标处插入其他文字
2007/08/26 Javascript
Javascript 判断函数类型完美解决方案
2009/09/02 Javascript
检测jQuery.js是否已加载的判断代码
2011/05/20 Javascript
滚动图片效果 jquery实现回旋滚动效果
2013/01/08 Javascript
jsp网页搜索结果中实现选中一行使其高亮
2014/02/17 Javascript
javascript判断是否按回车键并解决浏览器之间的差异
2014/05/13 Javascript
js+csss实现的一个带复选框的下拉框
2014/09/29 Javascript
JavaScript中字符串分割函数split用法实例
2015/04/07 Javascript
js禁止页面刷新与后退的方法
2015/06/08 Javascript
nodejs集成sqlite使用示例
2017/06/05 NodeJs
利用纯js + transition动画实现移动端web轮播图详解
2017/09/10 Javascript
微信小程序用户信息encryptedData详解
2018/08/24 Javascript
JS 音频可视化插件Wavesurfer.js的使用教程
2018/10/31 Javascript
微信小程序开发实现消息推送
2020/11/18 Javascript
JS中实现浅拷贝和深拷贝的代码详解
2019/06/05 Javascript
Python中类型检查的详细介绍
2017/02/13 Python
基于Python_脚本CGI、特点、应用、开发环境(详解)
2017/05/23 Python
python 表达式和语句及for、while循环练习实例
2017/07/07 Python
python遍历文件夹,指定遍历深度与忽略目录的方法
2018/07/11 Python
举例讲解Python常用模块
2019/03/08 Python
利用setuptools打包python程序的方法步骤
2020/01/18 Python
django 模型中的计算字段实例
2020/05/19 Python
python跨文件使用全局变量的实现
2020/11/17 Python
python语言time库和datetime库基本使用详解
2020/12/25 Python
英国最大的独立家具零售商:Furniture Village
2016/09/06 全球购物
2014元旦晚会策划方案
2014/02/19 职场文书
关于工作时间玩手机的检讨书
2014/09/18 职场文书
小学生思想品德评语
2014/12/31 职场文书
2015年三万活动总结
2015/03/25 职场文书
2015年学校团委工作总结
2015/05/26 职场文书
党员公开承诺书2016
2016/03/24 职场文书
Redis实战之Lettuce的使用技巧详解
2022/12/24 Redis