Django - [Errno 2] Нет такого файла или каталога для Img.open(`image_path`)

У меня есть блог, где пользователи могут загружать и редактировать сообщения. Я хотел изменить размер любого загруженного изображения до максимального размера 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] Нет такого файла или каталога: '/Users/vic/Desktop/django_project/media/postimage1.jpg'

Путь неверен! Путь upload-path определяется в функции 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.

Вернуться на верх