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 文件与目录操作
Dec 24 Python
Python获取系统默认字符编码的方法
Jun 04 Python
读取json格式为DataFrame(可转为.csv)的实例讲解
Jun 05 Python
详解python中的装饰器
Jul 10 Python
解决vscode python print 输出窗口中文乱码的问题
Dec 03 Python
python scp 批量同步文件的实现方法
Jan 03 Python
Python 数据可视化pyecharts的使用详解
Jun 26 Python
Python字符串对象实现原理详解
Jul 01 Python
windows中安装Python3.8.0的实现方法
Nov 19 Python
Python实现钉钉订阅消息功能
Jan 14 Python
Python控制台输出时刷新当前行内容而不是输出新行的实现
Feb 21 Python
pytest实现多进程与多线程运行超好用的插件
Jul 15 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中使用与Perl兼容的正则表达式
2006/11/26 PHP
php 无法载入mysql扩展
2010/03/12 PHP
11个PHPer必须要了解的编程规范
2014/09/22 PHP
php使用simplexml_load_file加载XML文件并显示XML的方法
2015/03/19 PHP
Laravel如何使用Redis共享Session
2018/02/23 PHP
iframe的父子窗口之间的对象相互调用基本用法
2013/09/03 Javascript
js实现数组冒泡排序、快速排序原理
2016/03/08 Javascript
AngularJS 服务详细讲解及示例代码
2016/08/17 Javascript
node.js学习之交互式解释器REPL详解
2016/12/08 Javascript
快速解决vue在ios端下点击响应延时的问题
2018/08/27 Javascript
解决vue字符串换行问题(绝对管用)
2020/08/06 Javascript
利用python程序生成word和PDF文档的方法
2017/02/14 Python
python自动裁剪图像代码分享
2017/11/25 Python
urllib和BeautifulSoup爬取维基百科的词条简单实例
2018/01/17 Python
Python使用matplotlib绘制余弦的散点图示例
2018/03/14 Python
从请求到响应过程中django都做了哪些处理
2018/08/01 Python
python调用百度语音识别api
2018/08/30 Python
详解python中sort排序使用
2019/03/23 Python
Python实现定时执行任务的三种方式简单示例
2019/03/30 Python
python中setuptools的作用是什么
2020/06/19 Python
HTML5应用之文件上传
2016/12/30 HTML / CSS
屈臣氏越南官网:Watsons越南
2021/01/14 全球购物
巴西最大的运动品牌:Olympikus
2020/07/14 全球购物
android面试问题与答案
2016/12/27 面试题
27个经典Linux面试题及答案,你知道几个?
2013/01/10 面试题
销售代表求职自荐信
2013/10/01 职场文书
竞聘上岗演讲稿范文
2014/01/10 职场文书
会议主持词
2014/03/17 职场文书
环保倡议书格式范文
2014/05/14 职场文书
文秘应届生求职信
2014/07/05 职场文书
教师三严三实心得体会
2014/10/11 职场文书
不尊敬老师检讨书范文
2014/11/19 职场文书
政审证明范文
2015/06/19 职场文书
2015最新婚礼司仪主持词
2015/06/30 职场文书
python pygame入门教程
2021/06/01 Python
box-shadow单边阴影的实现
2023/05/21 HTML / CSS