2011-03-08 113 views
1

我在模型中定義了delete()方法。我用它來清除緩存並刪除大拇指。當我刪除管理員中的一個元素時,在它的詳細信息(編輯模式)中,高速緩存被清除並且所有的大拇指被刪除。 但是,當我想一次刪除多個元素 - 檢查元素列表上的複選框 - 元素被刪除,但cahce和縮略圖不會被刪除,因此我的模型刪除方法不會被刪除:/管理員列表刪除和模型刪除()方法

我修復它?

回答

3

它在the documentation的第一部分。出於效率原因,Django Admin在queryset對象上調用delete。這完全繞過了每個實例的刪除方法。閱讀文檔。

如果要覆蓋此行爲,簡單的寫一個完成刪除您的首選方式自定義操作 - 例如,通過調用Model.delete()爲每個選擇的項目。

+0

所以,如果我將定義在管理delete_model - 它是否行得通呢? – robos85 2011-03-08 10:41:23

+0

閱讀我鏈接到的文檔。你需要創建一個「行動」。 – 2011-03-08 10:46:04

0

如文檔中描述的那樣,你需要重寫delete selected行動:

def delete_selected(modeladmin, request, queryset): 
    for element in queryset: 
     element.delete() 
delete_selected.short_description = "Delete selected elements" 

class ElementAdmin(admin.ModelAdmin): 
    actions = [delete_selected] 

admin.site.register(Element, ElementAdmin)