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

时间:2011-03-08 09:08:13

标签: django django-models django-admin

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

我该如何解决?

2 个答案:

答案 0 :(得分:3)

这是the documentation的第一部分。出于效率原因,Django Admin会在queryset对象上调用delete。完全绕过每个实例删除方法。阅读文档。

  

如果您希望覆盖此行为,只需编写一个自定义操作,以您首选的方式完成删除 - 例如,通过为每个所选项调用Model.delete()。

答案 1 :(得分: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)