Переименование полей изображений в Django работает только каждый второй раз

Я пытаюсь загрузить в модель django картинку профиля, которая всегда должна иметь имя pic.jpg. Старые картинки удаляются с помощью django_cleanup.

Это работает каждый раз. Я загружаю изображение и оно сохраняется как pic.jpg, затем загружаю другое и оно сохраняется как pic_{randomchars}.jpg (т.е. pic_wCU5xwv.jpg).

def rename_pic(instance, filename):
        return os.path.join("api/media/me/", filename)
pic = models.ImageField(upload_to=rename_pic)

def save(self, *args, **kwargs):
        try:
            # Opening the uploaded image
            img = Image.open(self.pic)
            output = BytesIO()

            img = img.convert('RGB')
            # after modifications, save it to the output
            img.save(output, format='JPEG')
            output.seek(0)

            # Set field to modified picture
            self.pic = InMemoryUploadedFile(output, 'ImageField', "pic.jpg",
                                            'image/jpeg', sys.getsizeof(output), None)
        except Exception as e:
            print(e)
        print(self.pic.name)       # Always prints pic.jpg
        super(MyData, self).save() # Error happens in this line
        print(self.pic.name)       # Prints api/media/me/pic.jpg and api/media/me/pic_{randomchars}.jpg alternating

Ошибка происходит где-то в строке super(MyData, self).save(), так как файл имеет правильное имя до его вызова.

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