как удалить ранее загруженное изображение из папки, когда пользователь меняет изображение профиля в python? - PullRequest
0 голосов
/ 05 августа 2020

У меня есть страница профиля пользователя, на которой пользователь может обновить ее детали и изменить изображение профиля. Загрузка изображения работает нормально. но я хочу этого, когда пользователь меняет изображение своего профиля. ранее загруженное изображение должно быть удалено из папки.

У меня есть модель UserProfile, у которой OneToOneField () связан с user_auth таблицей

models.py

class UserProfile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    profile_img = models.ImageField(upload_to='ProfileImg')

views.py

   profile_img = request.FILES['profile-upload']

   if profile_img.name.endswith(tuple(ALLOWED_EXTENTIONS)):
      if user.userprofile.profile_img is not None:
         os.remove(user.userprofile.profile_img.name)    <---------this solution is not working
      user.userprofile.profile_img = profile_img
      user.save()

Как удалить старое изображение при обновлении ImageField?

Я пробовал это решение, но возникает ошибка:

Exception Type: FileNotFoundError
Exception Value:    
[WinError 3] The system cannot find the path specified: 'ProfileImg/model-5.jpg'

Я уже перепроверил папку, но изображение все еще там. Я не знаю, где я ошибаюсь. Мы будем благодарны за любую помощь

1 Ответ

1 голос
/ 05 августа 2020

Для этого есть пакет - django-unused-media имя описывает, что он делает

Посетите документацию: https://pypi.org/project/django-unused-media/

...