以下代码是使用“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()”方法一摸一样,这是为什么呢?
Stu.objects.only("name").values_list("name")
要再次指定查询字段的话
Stu.objects.all().values_list('name')
Stu.objects.defer("name").values_list("name")
这几条是一样的,那"only"和"defer"有什么意义呢?
@沉迷football无法自拔:可以直接这样:Stu.objects.only("name")
Stu.objects.defer("name")
@梦里寻人: 这样查询到的结果并不是只有“name”字段,或者除去"name"字段,而是两种方法都查出了全部信息,values_list()只是使信息显示而已,如果还是需要在values_list()里指定显示结果的话,"only"和"defer"的方法就没有意义了。
@沉迷football无法自拔: 这个很简单,你三个函数,你Google查一下就知道各自的含义了