2

When I delete an object from my database, the image previously uploaded stays in the media directory. I would like to delete it automatically.

Here is my model:

class Door(models.Model) :
    image = models.ImageField(upload_to=upload_location)
    color = models.ForeignKey(Color, on_delete=models.CASCADE)
    price = models.DecimalField(max_digits=10, decimal_places=2, default='119.99')

Here is my delete view:

def door_delete(request, door_id) :
    door = get_object_or_404(Door, id=door_id)
    door.delete()
    return redirect("/dashboard/doors")

I have tried to instert before door.delete() line door.image.delete() but that hasn't worked out as far I as know.

Please help me if you know the answer.

Fantasmo Clone27
  • 333
  • 1
  • 10
  • 19

1 Answers1

5

do as below,

def door_delete(request, door_id):
    door = get_object_or_404(Door, id=door_id)
    if door.image:
        door.image.delete()
    door.delete()
    return redirect("/dashboard/doors")
Reference : How do I get Django Admin to delete files when I remove an object from the database/model?
JPG
  • 82,442
  • 19
  • 127
  • 206