Переименование полей изображений в 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(), так как файл имеет правильное имя до его вызова.