我不确定我做错了什么。但是当删除条目时,上传的文件及其相关的缓存不会被删除。
我有一个内联属性模型的照片模型,从照片模型到属性模型的FK。我使用'from sorl.thumbnail import ImageField'来替换默认的Django models.ImageField。
在Django Admin中,当我删除照片条目时,该条目将被删除,但该条目的文件不会被删除。我正在使用Django的runserver进行开发,我没有看到任何错误。根据我的阅读,如果删除了条目,则应删除这些文件,除非有对它们的引用。我看到的唯一参考是在thumbnail_kvstore表中。
任何人都对我失踪的事情有任何想法?
答案 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的情况下,这是要走的路。欢呼声。