'Delete Image on S3 bucket before uploading new image with the same name

I have a model, that on save, it uploads my image to my S3 bucket. But I'm having some trouble when I want to reupload an image with the same name. (Example: when a logo updates it needs to be reuploaded)

Because the image already exists, Django extends the pathname with it's own generated extention to make it unique. We don't want that, we want to delete the existing image before uploading the new image. That way, the extention is no more.

I've tried removing my image first with the pre_save signal, but that just makes my imagefield empty

@receiver(pre_save, sender=geo_models.Logo)
def remove_file_from_s3(sender, instance, using, **kwargs):
    instance.png.delete(save=False)

Any way of doing this?

Model:

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)


Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source