W3Cschool
恭喜您成為首批注冊(cè)用戶(hù)
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
通常,刪除方法被命名為 ?delete()
?。該方法立刻刪除對(duì)象,并返回被刪除的對(duì)象數(shù)量和一個(gè)包含了每個(gè)被刪除對(duì)象類(lèi)型的數(shù)量的字典。例如:
>>> e.delete()
(1, {'blog.Entry': 1})
你也能批量刪除對(duì)象。所有 ?QuerySet
?都有個(gè) ?delete()
? 方法,它會(huì)刪除 ?QuerySet
?中的所有成員。
例如,這會(huì)刪除 2005 發(fā)布的所有 ?Entry
?對(duì)象:
>>> Entry.objects.filter(pub_date__year=2005).delete()
(5, {'webapp.Entry': 5})
請(qǐng)記住,只要有機(jī)會(huì)的話(huà),這會(huì)通過(guò)純 SQL 語(yǔ)句執(zhí)行,所以就無(wú)需在過(guò)程中調(diào)用每個(gè)對(duì)象的刪除方法了。若你為模型類(lèi)提供了自定義的 ?delete()
? 方法,且希望確保調(diào)用了該方法,你需要手動(dòng)刪除該模型的實(shí)例(例如,如遍歷 ?QuerySet
?,在每個(gè)對(duì)象上分別調(diào)用 ?delete()
?方法),而不是使用 ?QuerySet
?的批量刪除方法? delete()
?。
當(dāng) Django 刪除某個(gè)對(duì)象時(shí),默認(rèn)會(huì)模仿 SQL 約束 ?ON DELETE CASCADE
? 的行為——換而言之,某個(gè)對(duì)象被刪除時(shí),關(guān)聯(lián)對(duì)象也會(huì)被刪除。例子:
b = Blog.objects.get(pk=1)
# This will delete the Blog and all of its Entry objects.
b.delete()
這種約束行為由 ?ForeignKey
?的 ?on_delete
?參數(shù)指定。
注意 ?delete()
? 是唯一未在 ?Manager
?上暴漏的 ?QuerySet
?方法。這是一種安全機(jī)制,避免你不小心調(diào)用了 ?Entry.objects.delete()
?,刪除了所有的條目。若你確實(shí)想要?jiǎng)h除所有對(duì)象,你必須顯示請(qǐng)求完整結(jié)果集合:
Entry.objects.all().delete()
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話(huà):173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: