在上传具有相同名称的新图像之前删除 S3 存储桶上的图像
Delete Image on S3 bucket before uploading new image with the same name
我有一个模型,它在保存时将我的图像上传到我的 S3 存储桶。但是当我想重新上传同名图像时遇到了一些麻烦。 (示例:徽标更新时需要重新上传)
因为图像已经存在,Django 使用它自己生成的扩展名来扩展路径名以使其唯一。我们不希望那样,我们想在上传新图像之前删除现有图像。这样,扩展就没有了。
我试过先用 pre_save 信号删除我的图像,但这只会让我的图像字段变空
@receiver(pre_save, sender=geo_models.Logo)
def remove_file_from_s3(sender, instance, using, **kwargs):
instance.png.delete(save=False)
有什么办法吗?
型号:
class Logo(models.Model):
logo_type_choices = Choices(
('ENTITY', _('Entity')),
('BRAND', _('Brand')),
)
class Meta:
verbose_name = _('logo')
verbose_name_plural = _('logos')
png = models.ImageField(
verbose_name='{0} {1}'.format('png', _('image')),
upload_to=get_upload_loc_png,
validators=[validators.validate_png_extension],
storage=storage,
max_length=200,
blank=True,
null=True,
)
logo_type = models.CharField(choices=logo_type_choices, max_length=20)
django-storages 有一个可选设置 AWS_S3_FILE_OVERWRITE
。
默认情况下,它设置为 True (reference)。也就是说,默认情况下,同名文件会相互覆盖。将此设置为 False 以附加额外的字符。
我有一个模型,它在保存时将我的图像上传到我的 S3 存储桶。但是当我想重新上传同名图像时遇到了一些麻烦。 (示例:徽标更新时需要重新上传)
因为图像已经存在,Django 使用它自己生成的扩展名来扩展路径名以使其唯一。我们不希望那样,我们想在上传新图像之前删除现有图像。这样,扩展就没有了。
我试过先用 pre_save 信号删除我的图像,但这只会让我的图像字段变空
@receiver(pre_save, sender=geo_models.Logo)
def remove_file_from_s3(sender, instance, using, **kwargs):
instance.png.delete(save=False)
有什么办法吗?
型号:
class Logo(models.Model):
logo_type_choices = Choices(
('ENTITY', _('Entity')),
('BRAND', _('Brand')),
)
class Meta:
verbose_name = _('logo')
verbose_name_plural = _('logos')
png = models.ImageField(
verbose_name='{0} {1}'.format('png', _('image')),
upload_to=get_upload_loc_png,
validators=[validators.validate_png_extension],
storage=storage,
max_length=200,
blank=True,
null=True,
)
logo_type = models.CharField(choices=logo_type_choices, max_length=20)
django-storages 有一个可选设置 AWS_S3_FILE_OVERWRITE
。
默认情况下,它设置为 True (reference)。也就是说,默认情况下,同名文件会相互覆盖。将此设置为 False 以附加额外的字符。