首页 新闻 会员 周边

Djang数据库查询的only()为什么会查出全部数据?

0
悬赏园豆:50 [待解决问题]

以下代码是使用“only()”方法,只查询“Stu”中的“name”字段,但结果却出现了所有字段信息:
Stu.objects.only("name").values_list()
查询结果如下:
Out[38]: <QuerySet [(1001, '小明', 23), (1002, '小红', 32), (1003, '林静', 45), (1004, '赵飞', 23), (1005, '刘洋', 42), (1006, '韩寒', 45), (1007, '张磊', 45),
(1008, '付林', 32), (1009, '姜玉阳', 23)]>
包括“defer()”方法,查询结果和“only()”方法一摸一样,这是为什么呢?

沉迷football无法自拔的主页 沉迷football无法自拔 | 初学一级 | 园豆:152
提问于:2019-07-16 22:40
< >
分享
所有回答(1)
0

Stu.objects.only("name").values_list("name")

悟行 | 园豆:12559 (专家六级) | 2019-07-17 09:04

要再次指定查询字段的话
Stu.objects.all().values_list('name')
Stu.objects.defer("name").values_list("name")
这几条是一样的,那"only"和"defer"有什么意义呢?

支持(0) 反对(0) 沉迷football无法自拔 | 园豆:152 (初学一级) | 2019-07-17 09:20

@沉迷football无法自拔:可以直接这样:Stu.objects.only("name")

Stu.objects.defer("name")

支持(0) 反对(0) 悟行 | 园豆:12559 (专家六级) | 2019-07-17 11:16

@梦里寻人: 这样查询到的结果并不是只有“name”字段,或者除去"name"字段,而是两种方法都查出了全部信息,values_list()只是使信息显示而已,如果还是需要在values_list()里指定显示结果的话,"only"和"defer"的方法就没有意义了。

支持(0) 反对(0) 沉迷football无法自拔 | 园豆:152 (初学一级) | 2019-07-17 17:18

@沉迷football无法自拔: 这个很简单,你三个函数,你Google查一下就知道各自的含义了

支持(0) 反对(0) 悟行 | 园豆:12559 (专家六级) | 2019-07-18 08:44
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册