Django ImageField Model:获取upload_to callable

时间:2017-09-16 17:19:23

标签: django django-models

我有一个用于上传图像的Django管理员字段,在我的模型中我使用callable来获取FileField实例和Filename。我的目标是打开用户尝试上传的文件,并通过其API将其上传到我的Dropbox帐户,然后返回保存图片的网址。如何获取正在上传的文件的完整路径?以下是我目前在模型中的内容:

    def upload_to_dropbox(self, filename):
      return DropboxStorage.store_file(self.image, filename)

    image = models.ImageField(upload_to=upload_to_dropbox)

我尝试使用ImageField的.url属性,但是返回了我的MEDIA_ROOT路径,也许我会以错误的方式解决这个问题?

1 个答案:

答案 0 :(得分:1)

upload_to字段仅用于设置文件夹和文件名。如果您想在存储文件时与Dropbox API交谈,则需要创建Storage api的Dropbox实现并改为使用storage关键字。

Django-storages已经有了一个Dropbox实现: http://django-storages.readthedocs.io/en/latest/backends/dropbox.html

from storages.backends.dropbox import DropBoxStorage
image = models.ImageField(storage=DropBoxStorage())