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