【问题标题】:Admin list delete and model delete() method管理员列表删除和模型删除()方法
【发布时间】:2011-03-08 09:08:13
【问题描述】:

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

我该如何解决?

【问题讨论】:

    标签: django django-models django-admin


    【解决方案1】:

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

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

    【讨论】:

    • 阅读我链接到的文档。您需要创建一个action
    【解决方案2】:

    如文档中所述,您需要覆盖 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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-02-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多