ha2*_*109 11 django django-forms django-admin
我正在制作一个模型,我有一个FileField
.我想将文件内容存储在数据库列中,而不是文件路径中.有什么建议?
Ron*_*age 22
无视反对者.如果要完全控制内容,请将文件放在数据库中的blob字段中.我通常也将文件名保存在一个单独的字段中,因此我可以根据需要重新构建文件(这样就可以保留扩展名,这与大多数操作系统中的文件类型相关).
一定要将实际的blob数据存储在一个单独的表中,只通过id连接到你的文件名/额外信息表...这样你在处理除了内容之外的任何与文件相关的信息时都不会牺牲任何性能本身.
反对者未能意识到的是,数据库只是一种极其优化的文件系统形式.字节是字节,盘扇区是盘扇区.与组织系统相比,数据库在组织和搜索这些字节方面要好得多.更不用说,数据库实现了比大多数文件系统更严格的安全性,并且得到了更好的维护(备份,支持人员等).
我知道这是一个古老的问题,但从那时起就有一些很好的代码来允许这个选项.特别是,请参阅django-database-files,它将使用Django的存储API使所有FileFields和ImageFields将其内容存储在数据库中.还有一个用于在文件系统上本地缓存文件的分支,以克服使用数据库的最大警告,即延迟.
ha2*_*109 -1
这很容易
只需覆盖管理中的保存方法
filecontent=form.cleaned_data.get('upload_file')
data =filecontent.read()
from django.db import connection
cursor = connection.cursor()
cursor.execute("update filecontent set filecontent=(%s) where id=(%s)",[data,obj.id])
connection.connection.commit()
cursor.close()
connection.close()
Run Code Online (Sandbox Code Playgroud)
这会将文件内容存储在表文件内容的数据库列文件内容中
归档时间: |
|
查看次数: |
7630 次 |
最近记录: |