创新互联Django4.0教程:Django4.0执行查询-删除对象

通常,删除方法被命名为 ​delete()​。该方法立刻删除对象,并返回被删除的对象数量和一个包含了每个被删除对象类型的数量的字典。例如:

景泰网站制作公司哪家好,找创新互联!从网页设计、网站建设、微信开发、APP开发、成都响应式网站建设公司等网站项目制作,到程序开发,运营维护。创新互联于2013年创立到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选创新互联。

>>> e.delete()
(1, {'blog.Entry': 1})

你也能批量删除对象。所有 ​QuerySet ​都有个 ​delete()​ 方法,它会删除 ​QuerySet ​中的所有成员。
例如,这会删除 2005 发布的所有 ​Entry ​对象:

>>> Entry.objects.filter(pub_date__year=2005).delete()
(5, {'webapp.Entry': 5})

请记住,只要有机会的话,这会通过纯 SQL 语句执行,所以就无需在过程中调用每个对象的删除方法了。若你为模型类提供了自定义的 ​delete()​ 方法,且希望确保调用了该方法,你需要手动删除该模型的实例(例如,如遍历 ​QuerySet​,在每个对象上分别调用 ​delete() ​方法),而不是使用 ​QuerySet ​的批量删除方法​ delete()​。
当 Django 删除某个对象时,默认会模仿 SQL 约束 ​ON DELETE CASCADE​ 的行为——换而言之,某个对象被删除时,关联对象也会被删除。例子:

b = Blog.objects.get(pk=1)
# This will delete the Blog and all of its Entry objects.
b.delete()

这种约束行为由 ​ForeignKey ​的 ​on_delete ​参数指定。
注意 ​delete()​ 是唯一未在 ​Manager ​上暴漏的 ​QuerySet ​方法。这是一种安全机制,避免你不小心调用了 ​Entry.objects.delete()​,删除了所有的条目。若你确实想要删除所有对象,你必须显示请求完整结果集合:

Entry.objects.all().delete()

本文名称:创新互联Django4.0教程:Django4.0执行查询-删除对象
网页网址:http://www.csdahua.cn/qtweb/news24/274374.html

网站建设、网络推广公司-快上网,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 快上网