0
圖像刪除後,我需要從文件系統中刪除它。 我用這個信號。 它運作良好,直到我發現一些奇怪的行爲。 如果在django管理員中選擇另一個文件(所以,我更改圖像文件),同時選擇刪除圖像,然後圖像不會從文件系統中刪除/它看起來像Django試圖刪除POST數據中的文件。Django管理員刪除圖像(錯誤或錯誤)
有什麼辦法可以刪除舊文件嗎?
圖像刪除後,我需要從文件系統中刪除它。 我用這個信號。 它運作良好,直到我發現一些奇怪的行爲。 如果在django管理員中選擇另一個文件(所以,我更改圖像文件),同時選擇刪除圖像,然後圖像不會從文件系統中刪除/它看起來像Django試圖刪除POST數據中的文件。Django管理員刪除圖像(錯誤或錯誤)
有什麼辦法可以刪除舊文件嗎?
如果我理解你的問題正確,你需要刪除舊的圖像,當你更換Django管理的圖像。
對於這樣的刪除信號不會幫助,因爲模型實例是永遠不會被刪除,但只有一個屬性被改變。爲此,您需要一種方法來確定保存時模型實例是否髒(任何字段已更改)。
您可以使用django-dirtyfields做到這一點。
class FooModel(DirtyFieldsMixin, models.Model):
image = models.ImageField(upload_to='...')
...
def changeremove(sender, instance, *args, **kwargs):
if instance.is_dirty():
name = 'image'
new = getattr(instance, name)
old = instance.get_dirty_fields().get(name, None)
if old:
old.delete(save=False)
setattr(instance, name, new)
post_save.connect(changeremove, sender=FooModel)
號,如果圖像是唯一改變它工作正常。但是,如果我正在更改文件並同時勾選刪除複選框,則圖像不會被刪除。 –
你是否將它用作內聯管理員? – miki725
是的。它是內聯的 –