删除条目时,sorl-thumbnail不删除父文件或缓存

时间:2011-02-16 05:29:45

标签: django django-models sorl-thumbnail

我不确定我做错了什么。但是当删除条目时,上传的文件及其相关的缓存不会被删除。

我有一个内联属性模型的照片模型,从照片模型到属性模型的FK。我使用'from sorl.thumbnail import ImageField'来替换默认的Django models.ImageField。

在Django Admin中,当我删除照片条目时,该条目将被删除,但该条目的文件不会被删除。我正在使用Django的runserver进行开发,我没有看到任何错误。根据我的阅读,如果删除了条目,则应删除这些文件,除非有对它们的引用。我看到的唯一参考是在thumbnail_kvstore表中。

任何人都对我失踪的事情有任何想法?

3 个答案:

答案 0 :(得分:2)

只能在Django<中调用delete_file方法。 1.2.5。删除sorl.thumbnail.ImageField文件,缩略图和键值存储引用(由sorl缩略图使用)的最佳方法是使用sorl.thumbnail.delete函数:sorl.thumbnail.delete(self.photo)

答案 1 :(得分:1)

来自ImageField的{​​{1}}应该是django的sorl.thumbnail

的扩展名

来自release notes of django 1.2.5

  

在早期的Django版本中,当删除包含FileField的模型实例时,FileField会自行删除后端存储中的文件。这为几个可能严重的数据丢失情况打开了大门,包括回滚事务和引用同一文件的不同模型上的字段。在Django 1.2.5中,FileField永远不会从后端存储中删除文件。如果您需要清除孤立文件,您需要自己处理它(例如,使用可以手动运行或计划通过例如cron定期运行的自定义管理命令)。

答案 2 :(得分:0)

我遇到了django-filebrowser的问题,当你用新的替换图像时,缓存的文件没有更新。所以在我的情况下,它不是sorl-thumbnail的问题,而是django-filebrowser。 sorl只会在文件路径发生变化时重新绘制缩略图。为了解决这个问题,我将文件浏览器FILEBROWSER_OVERWRITE_EXISTING设置为False。

FILEBROWSER_OVERWRITE_EXISTING = False

如果他们不使用django-filebrowser,这可以帮助至少调试问题的人。但是在django-filebrowser的情况下,这是要走的路。欢呼声。