Файл изображения не удаляется при удалении объекта с полем ImageField

У меня есть модель Picture с ImageField. При удалении экземпляра Picture файл, установленный в ImageField, не удаляется.

Это ошибка? Как я могу это сделать?

Ответ 1

Удаление файлов, связанных с FileField и ImageField, было умышленно удалено в Django 1.3. См. билет # 6456. Django широко использует транзакции, чтобы предотвратить повреждение данных, если что-то пойдет не так с запросом. Если транзакция удаления завершена, после того, как файл был удален из файловой системы, теперь у вас есть запись, указывающая на несуществующий файл. Все билеты, требующие автоматического удаления для возврата, были отмечены как "Не исправлены", поэтому это не изменится.

Обходные решения см. в fooobar.com/questions/77113/....

Ответ 2

Предположения?

class Picture(models.Model):
    image = ImageField(blank=True, null=True, upload_to="pics")

    def delete(self, *args, **kwargs):
        self.image.delete()
        super(Picture, self).delete(*args, **kwargs)

Затем создайте и удалите это вручную.

image = "./image.jpg"
picture = Picture.objects.create(image=File(open(image, "r"))
picture.save()

Затем удалите его?

picture.delete()

НТН