Tengo el siguiente modelo Cliente:
def custom_upload_to(instance, filename): try: old_instance = Cliente.objects.get(pk=instance.pk) old_instance.photo.delete() return 'clientes/'+ filename except: return 'clientes/'+ filenameTIPOS_DOCUMENTOS = ( (0, 'Tarjeta de indentidad'), (1, 'Cédula'), (2, 'Pasaporte'), (3, 'Cédula extranjería'),)class Cliente(models.Model): name = models.CharField(verbose_name="Nombre", max_length=200) last_name = models.CharField(verbose_name="Apellidos", max_length=200, null=True, blank=True) document_type = models.IntegerField(verbose_name="Tipo de documento", choices=TIPOS_DOCUMENTOS, default=1) document = models.CharField(verbose_name="Número de documento", max_length=200, unique=True) cell_phone = models.CharField(verbose_name="Celular", max_length=200, null=True, blank=True) phone = models.CharField(verbose_name="Telefono", max_length=200, null=True, blank=True) birthdate = models.DateField(verbose_name="Fecha de nacimiento", null=True, blank=True) email = models.EmailField(verbose_name="Correo electronico", null=True, blank=True, unique=True) direction = models.CharField(verbose_name="Dirección", max_length=200, null=True, blank=True) photo = models.ImageField(upload_to=custom_upload_to, null=True, blank=True) created = models.DateTimeField(auto_now_add=True, verbose_name="Fecha de creación") updated = models.DateTimeField(auto_now=True, verbose_name="Fecha de edición") def __str__(self): return ('{} {}'.format(self.name, self.last_name)) def get_tipo_documento(self): tipo = TIPOS_DOCUMENTOS[self.document_type][1] return tipo class Meta: db_table = 'cliente'
Y tengo esta view para el modelo
class ClienteDelete(LoginRequiredMixin, SuperuserRequiredMixin, DeleteView): model = Cliente success_url = reverse_lazy('cliente:list') template_name = 'cliente/cliente_confirm_delete.html'
Este es mi proyecto
y resulta que cuando elimino un cliente no se me esta eliminado la imagen del mismo, ¿qué puedo hacer para que cuando se elimine el cliente al mismo tiempo se elimine la imagen?
He pensado en sobre escribir algun metodo como el def get
o algo asi pero no se como hacerlo,
Gracias por la ayuda