新年新气象,享学课堂祝小伙伴新的一年步步高升。学习还是要有的,今天学习的知识看下面,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的外键不会阻止删除快速路径。
请注意,在对象删除中生成的查询是实施详细信息,可能会更改。
领取专属 10元无门槛券
私享最新 技术干货