【实测】django的QuerySet 是啥玩意,应该怎么用?
废话不多说,直接用土话给你讲明白:
先来看看query是什么意思?其实就是查询的意思。
所以,queryset 是什么?是查询结果的集合的意思。
我就不用那些标准的百度百科的回答了,咱直接上代码,从数据直接拿出来的数据来当例子,你就明白了。
我们用数据工厂平台的代码做演示,目前的models.py中的超链接表,存放数据为这样的,有俩个字段:
如图,俩个字段分别是link_name和link_url。
并且,下面的自动展示文案指定成了 link_name。
好然后我们用一段函数来把数据从中取出来并打印:
结果如下:
可以看到,直接从数据库用.all 或者.filter方法拿出来的 结果是queryset,也就是查询集合。
他们默认显示的就是 前面指定的那个字段- link_name,但是它其实包含的是整个数据,所有字段。
所以queryset的另一个特性就是可以像列表一样遍历和用下标定位具体内部元素:
遍历的具体子元素,都是一个个货真价实的数据记录哈。
别看我直接输出,就显示一个link_name的值。但是其实也有其他字段,link_url:
这些个1111 2222 的确是我随便写的link_url的值:
再来看看,如果后面加上.values() 得到的是什么吧?
此时我们得到的仍然是queryset,但结果中,却显示了所有字段。
这样我们用起来就更方便。为什么这么说呢?
因为我们可以把它外面再加上list() 变成我们python常用的格式了。
注意,此时的结果,变成了 列表里面套字典的样式,这回我们可以说随便摆弄了吧?
而且这个格式,可以直接传给前端的js函数中也就是bom层来使用。
转载自:https://juejin.cn/post/7056456752451026974