首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

享学课堂python教程-django删除delete

新年新气象,享学课堂祝小伙伴新的一年步步高升。学习还是要有的,今天学习的知识看下面,O(∩_∩)O。

请点击此处输入图片描述

delete()

对QuerySet中的所有行执行SQL删除查询。立即应用delete()。您不能在QuerySet上调用delete(),该查询已采取切片或以其他方式无法过滤。

例如,要删除特定博客中的所有条目:

# Delete all the entries belonging to this Blog.

默认情况下,Django的ForeignKey模拟SQL约束ON DELETE CASCADE字,任何具有指向要删除的对象的外键的对象将与它们一起被删除。例如:

# This will delete all Blogs and all of their Entry objects.

blogs.delete()

此级联行为可通过ForeignKey的on_delete参数自定义。

delete()方法执行批量删除,并且不会在模型上调用任何delete()方法。但它会为所有已删除的对象(包括级联删除)发出pre_delete和post_delete信号。

Django需要获取对象到内存中以发送信号和处理级联。然而,如果没有级联和没有信号,那么Django可以采取快速路径并删除对象而不提取到内存中。对于大型删除,这可以显着减少内存使用。执行的查询量也可以减少。

设置为on_delete DO_NOTHING的外键不会阻止删除快速路径。

请注意,在对象删除中生成的查询是实施详细信息,可能会更改。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180222A087XZ00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券