Django如何只篩選查詢集的有用字段,以提高查詢效率?

如果我們在實現某個功能的時候只需要獲取其中的某一個字段或者某幾個字段,那麼我們使用Model.objects.all()的查詢方法就非常的不妥,雖然可以實現想要的效果,但這個查詢效率就不如我們只篩選查詢需要的字段的效率高,俗話說高手過招,只在剎那間,開發也一樣,性能、效率是我們必須要考慮的東西。


Django如何只篩選查詢集的有用字段,以提高查詢效率?

關注我,輕輕鬆鬆學django


Django提供了兩種篩選查詢集字段的方法

  • queryset上的values和values_list方法。
  • only_method

假如我們想獲取first_name和last_name字段以B開始的用戶,那麼我們只查詢這兩個字段即可,如下:

1、使用values方法

<code>>>> queryset = User.objects.filter(
   first_name__startswith='B'
).values('first_name', 'last_name')
>>> queryset
<queryset>/<code>

2、使用only方法

<code>>>> queryset = User.objects.filter(
   first_name__startswith='R'
).only("first_name", "last_name")
>>> <queryset>/<code>

對比這兩種方法我們可以看出only方法只比values方法多獲取了id,他們倆的區別也就是一個不獲取id另一個獲取。

如果在這裡學到了知識,那麼請關注我或加入圈子一起交流學習,這裡將持續更新關於django的更多好內容。


分享到:


相關文章: