Django - [Errno 2] Нет такого файла или каталога после сжатия изображения
Имею блог, в котором пользователи могут загружать и редактировать сообщения. Я хотел изменить размер любого загруженного изображения до максимального размера 500*500px. Для этого я создал оператор if перед сохранением
models.py
def _upload_path(instance, filename):
return instance.get_upload_path(filename)
class Post(models.Model, HitCountMixin):
user = models.ForeignKey(User, on_delete=models.CASCADE)
title = models.CharField(max_length=300)
image = models.ImageField(blank=True, null=True, upload_to=_upload_path)
def __str__(self):
return self.title
def get_upload_path(self, filename):
return "posts/images/" + str(self.user.username) + "/" + filename
def save(self, *args, **kwargs):
# resize image
if self.image:
img = Image.open(self.image.path) # Open image using self
if img.height > 500 or img.width > 500:
new_img = (500, 500)
img.thumbnail(new_img)
img.save(self.image.path) # saving image at the same path
return super(Post, self).save(*args, **kwargs)
Неправильно путь к изображению не распознается, и я получаю ошибку
[Errno 2] No such file or directory: '/Users/vic/Desktop/django_project/media/postimage1.jpg'
Путь неверен! Путь загрузки определяется в функции get_upload_path() и должен вести к /Users/vic/Desktop/django_project/media/posts/images/username/postimage1.jpg
Я попытался изменить открытый путь на
img = Image.open(str(settings.MEDIA_URL) + self.get_upload_path(self.image.name)) или на жестко закодированный URL с localhost:8000... но ничего не работает. Если убрать оператор if, файл загружается по правильному пути, поэтому ошибка должна быть в определении img.