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查询阿里巴巴关键字排名的方法
Jul 08 Python
python高手之路python处理excel文件(方法汇总)
Jan 07 Python
深入浅析python with语句简介
Apr 11 Python
Python中使用pypdf2合并、分割、加密pdf文件的代码详解
May 21 Python
用Python写一个自动木马程序
Sep 17 Python
利用Python校准本地时间的方法教程
Oct 31 Python
Python: 传递列表副本方式
Dec 19 Python
Django REST framwork的权限验证实例
Apr 02 Python
Python3爬虫里关于代理的设置总结
Jul 30 Python
浅析NumPy 切片和索引
Sep 02 Python
分享unittest单元测试框架中几种常用的用例加载方法
Dec 02 Python
Opencv 图片的OCR识别的实战示例
Mar 02 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(2)
2006/10/09 PHP
php下获取Discuz论坛登录用户名、用户组、用户ID等信息的实现代码
2010/12/29 PHP
国外十大最流行的PHP框架排名
2013/07/04 PHP
PHP实现的redis主从数据库状态检测功能示例
2017/07/20 PHP
详解laravel安装使用Passport(Api认证)
2018/07/27 PHP
PHP7 标准库修改
2021/03/09 PHP
javascript编程起步(第五课)
2007/01/10 Javascript
IE浏览器兼容Firefox的JS脚本的代码
2008/10/23 Javascript
基于Jquery实现表格动态分页实现代码
2011/06/21 Javascript
js(jQuery)获取时间的方法及常用时间类搜集
2013/10/23 Javascript
jqgrid 表格数据导出实例
2013/11/21 Javascript
Javascript中arguments用法实例分析
2015/06/13 Javascript
jQuery实现的产品自动360度旋转展示特效源码分享
2015/08/21 Javascript
AngularJs Modules详解及示例代码
2016/09/01 Javascript
记一次webapck4 配置文件无效的解决历程
2018/09/19 Javascript
Element DateTimePicker日期时间选择器的使用示例
2020/07/27 Javascript
详解Vue.js3.0 组件是如何渲染为DOM的
2020/11/10 Javascript
[05:17]DOTA2睡衣妹卖萌求签名 CJ第二天全明星影像
2013/07/28 DOTA
python中查看变量内存地址的方法
2015/05/05 Python
Python中的字符串替换操作示例
2016/06/27 Python
解决python 输出是省略号的问题
2018/04/19 Python
python计算日期之间的放假日期
2018/06/05 Python
python+selenium打印当前页面的titl和url方法
2018/06/22 Python
Python requests模块实例用法
2019/02/11 Python
实例详解Python模块decimal
2019/06/26 Python
Python 分享10个PyCharm技巧
2019/07/13 Python
python打开使用的方法
2019/09/30 Python
Python大数据之从网页上爬取数据的方法详解
2019/11/16 Python
filter使用python3代码进行迭代元素的实例详解
2020/12/03 Python
python进行二次方程式计算的实例讲解
2020/12/06 Python
市场营销专业毕业生求职信
2014/03/26 职场文书
党员国庆节演讲稿范文2014
2014/09/21 职场文书
志愿者事迹材料
2014/12/26 职场文书
技术负责人岗位职责
2015/02/10 职场文书
2015年校务公开工作总结
2015/05/26 职场文书
漫画「处刑少女的生存之道」第3卷封面公开
2022/03/21 日漫