2011-02-16 79 views
1

我不确定我在做什么错。但是,删除条目时,上传的文件及其相关缓存不会被删除。sorl-thumbnail在删除条目时不删除父文件或缓存

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

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

任何人有什么想法我失踪?

回答

1

sorl.thumbnailImageField应该是Django的FileField

的延伸从release notes of django 1.2.5

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

+0

根据sorl中的ImageField,它是FileField的扩展。然而,它确实有一个delete_file方法,它定义了它应该删除这些文件。问题是,它似乎并没有自己调用它。可能是因为你刚才指出的。 所以我想我想知道,我可以使用这种方法吗?如果是这样,使用它的最好方法是什么? – bmeyer71 2011-02-16 16:39:15

2

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

0

我有Django的filebrowser的问题,当你更换一个新形象,缓存的文件没有更新。所以在我的情况下,这不是一个与sorl-thumbnail相关的问题,而是与django-filebrowser相关的问题。当文件路径改变时,sorl只会重新绘制缩略图。要解决此问题,我将filebrowser FILEBROWSER_OVERWRITE_EXISTING设置设置为False。

FILEBROWSER_OVERWRITE_EXISTING = False 

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