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