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实现巡检系统(solaris)示例
Apr 02 Python
Python中异常重试的解决方案详解
May 05 Python
Python中扩展包的安装方法详解
Jun 14 Python
python smtplib模块实现发送邮件带附件sendmail
May 22 Python
Django基础知识与基本应用入门教程
Jul 20 Python
在Django的View中使用asyncio的方法
Jul 12 Python
python实现截取屏幕保存文件,删除N天前截图的例子
Aug 27 Python
python去除删除数据中\u0000\u0001等unicode字符串的代码
Mar 06 Python
动态设置django的model field的默认值操作步骤
Mar 30 Python
使用Keras实现简单线性回归模型操作
Jun 12 Python
scrapy利用selenium爬取豆瓣阅读的全步骤
Sep 20 Python
Django rest framework如何自定义用户表
Jun 09 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
基于mysql的bbs设计(四)
2006/10/09 PHP
30个php操作redis常用方法代码例子
2014/07/05 PHP
利用PHP生成静态html页面的原理
2016/09/30 PHP
PHP实现的链式队列结构示例
2017/09/15 PHP
laravel 关联关系遍历数组的例子
2019/10/10 PHP
jQuery下扩展插件和拓展函数的写法(匿名函数使用的典型例子)
2010/10/20 Javascript
javascript学习笔记(六) Date 日期类型
2012/06/19 Javascript
Extjs4 消息框去掉关闭按钮(类似Ext.Msg.alert)
2013/04/02 Javascript
JS获取键盘上任意按键的值(实例代码)
2013/11/12 Javascript
不使用jquery实现js打字效果示例分享
2014/01/19 Javascript
JavaScript实现自动变换表格边框颜色
2015/05/08 Javascript
Javascript点击其他任意地方隐藏关闭DIV实例
2016/06/21 Javascript
Javascript中字符串replace方法的第二个参数探究
2016/12/05 Javascript
jQuery实现模拟flash头像裁切上传功能示例
2016/12/11 Javascript
Vue.js仿Metronic高级表格(二)数据渲染
2017/04/19 Javascript
Swiper自定义分页器使用详解
2017/12/28 Javascript
微信小程序云开发如何使用npm安装依赖
2019/05/18 Javascript
ES6 Symbol数据类型的应用实例分析
2019/06/26 Javascript
微信小程序点餐系统开发常见问题汇总
2019/08/06 Javascript
Vue退出登录时清空缓存的实现
2019/11/12 Javascript
.dcm格式文件软件读取及python处理详解
2020/01/16 Python
python实现猜数游戏(保存游戏记录)
2020/06/22 Python
linux面试题参考答案(8)
2016/04/19 面试题
企业统计员岗位职责
2013/12/13 职场文书
中层干部竞争上岗演讲稿
2014/01/13 职场文书
旅游网创业计划书
2014/01/31 职场文书
党支部对照检查材料
2014/08/25 职场文书
十佳党员事迹材料
2014/08/28 职场文书
领导走群众路线整改措施思想汇报
2014/10/12 职场文书
2015元旦节寄语
2014/12/08 职场文书
胡雪岩故居导游词
2015/02/06 职场文书
电子商务专业求职信范文
2015/03/19 职场文书
收入证明申请书
2015/06/12 职场文书
毕业论文答辩稿范文
2015/06/23 职场文书
2015年“我们的节日·重阳节”活动总结
2015/07/29 职场文书
食品安全主题班会
2015/08/13 职场文书