1

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

我有一个内联属性模型的照片模型,其中包含从照片模型到属性模型的 FK。我正在使用“from sorl.thumbnail import ImageField”来替换默认的 Django models.ImageField。

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

有人对我所缺少的有任何想法吗?

4

3 回答 3

2

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

于 2011-02-23T00:18:40.610 回答
1

ImageFieldfromsorl.thumbnail应该是 django 的扩展FileField

来自django 1.2.5 的发行说明

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

于 2011-02-16T07:13:47.807 回答
0

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

FILEBROWSER_OVERWRITE_EXISTING = False

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

于 2014-11-11T18:44:32.420 回答