【发布时间】:2014-05-14 01:54:40
【问题描述】:
我正在尝试让 mongodb + gridfs 为 django 工作,以便我可以从 django 中提供文件,但是在以编程方式创建新文件时,我收到此错误。我不确定要遵循哪些文件,因为其中一些文件似乎已过时。
这是我的 settings.py:
DATABASES = {
'files': {
'ENGINE': 'django_mongodb_engine',
'NAME': 'files',
'USER': 'files',
'PASSWORD': 'files',
'HOST': 'localhost',
'PORT': 27017,
'SUPPORTS_TRANSACTIONS': False,
}
}
DEFAULT_FILE_STORAGE = 'mongo_storage.storage.GridFSStorage'
GRIDFS_DATABASE = 'files'
而且,在我的模型中,我只是使用一个文件字段:
data = models.FileField(upload_to="/tmp/uploads")
然后,我正在创建一个新文件...:
internal_file = File()
internal_file.data.save(checksum, open(path).read())
那是我得到属性错误的时候。
我是否需要以不同方式配置我的模型,而不是显式调用 save() 方法?
【问题讨论】:
-
您需要将内容包装在 ContentFile 中,或者在调用 save() 时将文件处理程序包装在 Django File 对象中。看看这个答案:stackoverflow.com/a/7515224/1530272
-
我一次又一次地尝试过,我得到这个错误:对于类型字符变化(32)的值太长。我不确定这是一个积极的步骤还是一个侧面的步骤。
-
积极步骤:根据您的数据库约束,您上传到的路径必须少于 32 个字符。要么增加文件名字段的最大字符大小,要么使用更短的文件名
-
嗨 Sohan,那是 mongodb 名称字段还是什么?我尝试更改模型的约束以及更改文件名本身。
标签: python django mongodb gridfs