Файл изображения не удаляется при удалении объекта с полем 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()
НТН