管理员列表删除和模型删除()方法

问题描述:

我在模型中定义了delete()方法。我用它来清除缓存并删除大拇指。当我删除管理员中的一个元素时,在它的详细信息(编辑模式)中,高速缓存被清除并且所有的大拇指被删除。 但是,当我想一次删除多个元素 - 检查元素列表上的复选框 - 元素被删除,但cahce和缩略图不会被删除,因此我的模型删除方法不会被删除:/管理员列表删除和模型删除()方法

我修复它?

它在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

如文档中描述的那样,你需要重写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)