0

在删除信号上使用django-storages 包S3 我试图从 S3 中删除图像 我尝试了以下操作(见下文)但得到错误...

“ImageFieldFile”对象没有属性“startswith”

def product_pre_delete(sender, instance, **kwargs):
    """
    Sent at the beginning of a product delete() method product queryset's delete() method.
    """
    default_storage.delete(instance.qr_image)

models.signals.pre_delete.connect(product_pre_delete, sender=Product)
4

2 回答 2

1

据我所知,django-storages 只会在对象本身被删除时删除文件(向下滚动到删除部分)https://django-storages.readthedocs.org/en/latest/backends/amazon-S3 .html?highlight=删除

如果您想保留对象,但删除文件,您可能必须使用Boto自己处理,这是 django-storages 在使用 S3 时使用的底层库。

于 2013-02-22T15:44:50.627 回答
1

我也遇到了这个问题,发现“ImageFieldFile”对象没有属性“startswith”会引发错误,因为您使用的是文件对象而不是file.name。使用该对象在本地工作,但不适用于 AWS。下面的代码应该可以工作,因为我能够成功删除仍然与对象关联的文件。

default_storage.delete(instance.qr_image.name)
于 2013-04-15T19:05:45.163 回答