Код в следующем рабочем примере после загрузки изображения в ImageField обнаружит, существует ли файл с таким же именем, и в этом случае удалите этот файл перед сохранением нового.
Его можно легко изменить, чтобы он удалял старый файл независимо от имени файла.Но это не то, что я хотел в своем проекте.
Добавьте следующий класс:
from django.core.files.storage import FileSystemStorage
class OverwriteStorage(FileSystemStorage):
def _save(self, name, content):
if self.exists(name):
self.delete(name)
return super(OverwriteStorage, self)._save(name, content)
def get_available_name(self, name):
return name
И используйте его с ImageField следующим образом:
class MyModel(models.Model):
myfield = models.ImageField(
'description of purpose',
upload_to='folder_name',
storage=OverwriteStorage(), ### using OverwriteStorage here
max_length=500,
null=True,
blank=True,
height_field='height',
width_field='width'
)
height = models.IntegerField(blank=True, null=True)
width = models.IntegerField(blank=True, null=True)