我想評估一次查詢集,即將對象提取到本地內存,然後繼續在獲取的對象上執行各種filter
命令。是否可以強制查詢集評估,同時保留查詢集
當然,我可:
- 跌落列出內涵和其他本地Python語法,但在許多情況下,Django的ORM的語法更具可讀性。
- 跳過評估基本查詢集,但後來我得到性能問題,因爲稍後我需要很多
filter
操作。
那麼..是否有可能強制查詢集評估,同時保留結果作爲queryset對象?
我想評估一次查詢集,即將對象提取到本地內存,然後繼續在獲取的對象上執行各種filter
命令。是否可以強制查詢集評估,同時保留查詢集
當然,我可:
filter
操作。那麼..是否有可能強制查詢集評估,同時保留結果作爲queryset對象?
您可以通過迭代查詢集輕鬆地進行評估:只要您忽略迭代結果,對象就會保留一個查詢集。
for item in myqueryset:
pass
但是,這不會真的做你想做的,因爲你說你想調用進一步的過濾器方法對評估的查詢集。這是行不通的,因爲filter()
涉及修改底層查詢,並將始終命中數據庫。
我不知道爲什麼你認爲如果你跳過評估queryset,你會得到一個性能問題:相反的情況是,你提出的評估是不必要的一步。
剛剛做一個len(myqueryset)
怎麼樣。
或者只是做一個條件檢查也可以強制評估它。
'list(myqueryset)'會產生同樣的效果(當然,只要你不重新綁定myqueryset)。只是說... –