栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Django模型:delete()未触发

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Django模型:delete()未触发

我认为你可能正在使用管理员的批量删除功能,并且遇到了管理员的批量删除方法未调用的事实

delete()

我过去通过编写用于删除模型的自定义admin操作来解决此问题。

如果你没有使用管理员的批量删除方法(例如,你单击对象的编辑页面上的删除按钮),则说明正在进行其他操作。

请在此处查看警告:

QuerySet.delete()
出于效率考虑,使用“删除选定对象”操作有一个重要的警告:
delete()
不会调用模型的方法。

如果你想覆盖此行为,只需编写一个自定义操作即可以你喜欢的方式完成删除操作,例如,通过调用

Model.delete()每
个选定项。

有关批量删除的更多背景,请参见有关对象删除的文档。

我的自定义管理员模型如下所示:

from photoblog.models import PhotoBlogEntryfrom django.contrib import admin    class PhotoBlogEntryAdmin(admin.ModelAdmin):    actions=['really_delete_selected']    def get_actions(self, request):        actions = super(PhotoBlogEntryAdmin, self).get_actions(request)        del actions['delete_selected']        return actions    def really_delete_selected(self, request, queryset):        for obj in queryset: obj.delete()        if queryset.count() == 1: message_bit = "1 photoblog entry was"        else: message_bit = "%s photoblog entries were" % queryset.count()        self.message_user(request, "%s successfully deleted." % message_bit)    really_delete_selected.short_description = "Delete selected entries"admin.site.register(PhotoBlogEntry, PhotoBlogEntryAdmin)


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/390556.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号