django中queryset的切片是左閉右開嗎

2021-09-29 19:45:08 字數 392 閱讀 2171

原文:

學習老王python的"提高model效率的方法"時,看到分片可以對queryset用,手動試了一下,發現了點特殊的情況。

原文建議使用:

news = news.objects.all()[1:10]

而非:news = news.objects.all()

news = news[1:10]

經測試發現,因為queryset是lazy query,如果沒有對queryset進行實際操作,以上兩種寫法是完全一樣的,列印它們的query就可以看出來。django會生成limit sql語句。並且切片後的結果仍然是queryset。

如果已經對queryset進行了實際操作(讀、遍歷等),那第二種寫法會返回list。很明顯,此時第二種寫法在效率上是不可取的。

django 擴充套件 補丁 QuerySet

django get方法預設獲取不到物件就丟擲異常,但是對於處理資料來說,每次都去try catch 會讓我很煩,用過了odoo 覺得django 這點預設很不友好 odoo 獲取不到會返回none 對於這個問題,原諒我api沒看完整 也可以說記憶不深 我馬上想到的是打補丁,去api檢視資料後,發現...

Django中QuerySet的結果是否為空的判斷

目錄有時需要對queryset的結果是否為空進行判斷,那麼不 方便 使用django自帶的方式情況下,如何進行判斷呢,又有多少種方式呢?一共有三種方式,接下來通過簡單例項予以一一介紹。其中account為自定義model 有如下物件 user account.objects.filter usern...

django中queryset的兩大特性

roles roleinfo.objects.all 建立查詢集的時候,是不會訪問資料庫的,直到真正的呼叫資料的時候,才會訪問資料庫,所以 roles roleinfo.objects.all 沒有真正的進行資料庫查詢的,只是建立了乙個資料庫查詢集 呼叫資料,真正的使用資料 1 迭代 2 序列化 3...