这要死我了!
我正在使用 django-filebrowser,我想创建一个画廊应用程序,利用它的上传功能来管理图像。
我有一个画廊模型,允许用户在服务器上选择或创建一个目录,并将文件上传到该文件夹以显示在画廊中。我想自动搜索用户已将图像上传到并选择的目录,然后为文件夹中的每个图像自动创建图像实例。
class Gallery(model.Models):
gallerydirectory = FileBrowserField(...)
title = ...
description ...
class Image(model.Models):
image_field = models.ImageField()
问题是 FileBrowser 与 Django 不同地表示图像,但我想使用 DJango ImageFields,因为我可以在模板端使用其他应用程序(sorl 缩略图)。
我拥有文件所需的所有数据,即文件名、路径等,我只是无法让 Django 创建 ImageField 的实例,而无需再次实际上传图像。我只是想填充它。
我在这里看到了另一个线程,它提出了以下建议:
for image in filebrowser_image_objects_list:
f = File(open('path-to-file-on-server','r'))
i = Image()
i.image_field('filename.png',f.read())
但这给了我一个:
SuspiciousOperation error
Attempted access to '/filename.png' denied
这表明路径没有被正确读取。我已经打印了文件对象的属性,它打开了正确的图像,只是没有传递给 ImageField
帮助将不胜感激!
更新
我已经放弃尝试完成这项工作,因为它太乱了。我上面遇到的问题是我已将 ImageField 的upload_field 设置为'/',并且没有注意到它意味着文件被写入'/something.png'。
我已经对其进行了修改,以便图像现在也使用 FileBrowserField 而不是 ImageField。