sorl-thumbnail не удаляет родительский файл или кеш при удалении записи - PullRequest
1 голос
/ 16 февраля 2011

Я не уверен, что я делаю неправильно. Но загруженный файл и связанный с ним кеш не удаляются при удалении записи.

У меня есть модель фотографий, встроенная в модель свойства, с ФК от модели фотографий до модели свойства. Я использую 'from sorl.thumbnail import ImageField' для замены моделей Django по умолчанию. ImageField.

В Django Admin, когда я удаляю запись фотографии, запись удаляется, но файлы этой записи не удаляются. Я использую сервер запуска Django для разработки и не вижу никаких ошибок. Из того, что я прочитал, эти файлы должны быть удалены, если запись удалена, если на них еще нет ссылки. Единственная ссылка, которую я пока вижу, находится в таблице thumbnail_kvstore.

У кого-нибудь есть мысли о том, что мне не хватает?

Ответы [ 3 ]

2 голосов
/ 23 февраля 2011

Метод delete_file будет вызываться только в Django sorl.thumbnail.ImageField, миниатюры и ссылки на хранилище значений ключей (используемые эскизом sorl) - использовать функцию sorl.thumbnail.delete: sorl.thumbnail.delete(self.photo)

1 голос
/ 16 февраля 2011

ImageField из sorl.thumbnail должно быть расширением django's FileField

Из примечаний к выпуску django 1.2.5 :

В более ранних версиях Django, когда экземпляр модели, содержащий FileField, был удален, FileField взял на себя задачу также удалить файл из внутреннего хранилища.Это открыло дверь к нескольким потенциально серьезным сценариям потери данных, включая откат транзакций и поля в разных моделях, ссылающихся на один и тот же файл.В Django 1.2.5 FileField никогда не удаляет файлы из внутреннего хранилища.Если вам нужна очистка потерянных файлов, вам придется обрабатывать их самостоятельно (например, с помощью настраиваемой команды управления, которую можно запускать вручную или запускать по расписанию, например, через cron).

0 голосов
/ 11 ноября 2014

У меня была проблема с django-filebrowser, и когда вы заменили образ новым, кэшированные файлы не обновлялись. Так что в моем случае это была проблема не с sorl-thumbnail, а с django-filebrowser. sorl будет перерисовывать эскизы только тогда, когда путь к файлу изменился. Чтобы это исправить, я установил в настройке файлового браузера FILEBROWSER_OVERWRITE_EXISTING значение False.

FILEBROWSER_OVERWRITE_EXISTING = False

Это может помочь кому-то хотя бы отладить проблему, если они не используют django-filebrowser. Но в случае с django-filebrowser это путь. Приветствия.

...