2011-02-16 88 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的情況下,這是要走的路。乾杯。