如果我们在实现某个功能的时候只需要获取其中的某一个字段或者某几个字段,那么我们使用Model.objects.all()的查询方法就非常的不妥,虽然可以实现想要的效果,但这个查询效率就不如我们只筛选查询需要的字段的效率高,俗话说高手过招,只在刹那间,开发也一样,性能、效率是我们必须要考虑的东西。
Django提供了两种筛选查询集字段的方法
- queryset上的values和values_list方法。
- only_method
假如我们想获取first_name和last_name字段以B开始的用户,那么我们只查询这两个字段即可,如下:
1、使用values方法
>>> queryset = User.objects.filter( first_name__startswith='B').values('first_name', 'last_name')>>> queryset
2、使用only方法
>>> queryset = User.objects.filter( first_name__startswith='R').only("first_name", "last_name")>>>
对比这两种方法我们可以看出only方法只比values方法多获取了id,他们俩的区别也就是一个不获取id另一个获取。