在删除信号上使用django-storages package 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)
答案 0 :(得分:1)
据我所知,django-storage只会删除对象本身时删除文件(向下滚动到删除部分)https://django-storages.readthedocs.org/en/latest/backends/amazon-S3.html?highlight=delete
如果你想保留对象,但删除文件,你可能必须自己使用Boto来处理它,这是django-storage在使用S3时使用的底层库。
答案 1 :(得分:1)
我也遇到了这个问题,发现'ImageFieldFile'对象没有属性'startswith'引发错误,因为你使用的是文件对象而不是file.name。使用该对象可在本地使用,但不适用于AWS。以下代码应该可以正常工作,因为我能够成功删除仍与对象关联的文件。
default_storage.delete(instance.qr_image.name)