Django ORM queryset object 解释(子查询和join连表查询的结果)

#下面两种是基于QuerySet查询  也就是说SQL中用的jion连表的方式查询books = models.UserInfo.objects.all() print(type(books))   ---> <class ‘django.db.models.query.QuerySet‘> 查询出来是一个对象QuerySey
取值 print(books.values())

books = models.UserInfo.objects.filter()print(type(books))   ---> <class ‘django.db.models.query.QuerySet‘> 查询出来一个QureySet
取值 print(books.values())
 
总结:books查询来了结果是queryset,然后在这个基础上面查询作者的名字,也就是跨表查询,这时候就需要用values去获取另外一个表的数据.怎么获取呢?  就通过books.values("user__name")  user是UserInfo表字段的名称   __代表双下划线

#基于对象的查询 也就是说SQL中用的子查询,就是slecte 里面套了slecte查询方式books = models.UserInfo.objects.first()print(type(books))   ---> <class ‘app.models.UserInfo‘>   查询出来是一个对象
取值 print(books.password)
总结:什么是基于对象? 就是说books对象已经拿到了,相当于就是表中的name这个对象已经查询到了,然后对象点属性取值就可以了可以用点的方式获取数据  books.name 或者 book.age 等

原文地址:https://www.cnblogs.com/ajaxa/p/10371680.html

时间: 2024-10-08 05:14:13

Django ORM queryset object 解释(子查询和join连表查询的结果)的相关文章

Python - Django - ORM QuerySet 方法补充

models.py: from django.db import models class Employee2(models.Model): name = models.CharField(max_length=16) age = models.IntegerField() salary = models.IntegerField() province = models.CharField(max_length=32) dept = models.ForeignKey(to="Dept"

不使用left-join等多表关联查询,只用单表查询和Java程序,简便实现“多表查询”效果

上次我们提到,不使用left-loin关联查询,可能是为了提高效率或者配置缓存,也可以简化一下sql语句的编写.只写单表查询,sql真得太简单了.问题是,查询多个表的数据还是非常需要的. 因此,存在这么一个强烈的需求:查询2个集合,怎么合并2个集合中的数据为1个集合,且数据关联要正确.在实践中,我提炼了如下流程和工具方法: 流程  先查询第1个集合,根据第1个集合的结果,查询第2个集合,合并2个集合 public PageVo listPage(PageVo form) { List<Map<

对于大量left join 的表查询,可以在关键的 连接节点字段上创建索引。

问题: 大量的left join 怎么优化 select a.id,a.num,b.num,b.pcs,c.num, c.pcs,d.num,d.pcs,e.num,e.pcs,a.x, a.y from a left join b.id=a.id and b.time=a.time left join c.id=a.id and b.time=a.time left join d.id=a.id and b.time=a.time left join e.id=a.id and b.time=

inner join 多表查询

三表以及三表以上联合查询: select table1.ziduan1,table2.ziduan,2,table3,ziduan3 from table1 inner join table2 on table1.field1 = table2.field1 inner join table3 on table1.field1 = table3.field1 举例: select clFile.FILEPATH,clPerson.personcode,cailiao.clcode from cl

mysql常用基础操作语法(四)--对数据的简单无条件查询及库和表查询【命令行模式】

1.mysql简单的查询:select 字段1,字段2...  from tablename; 如果字段那里写一个*,代表查询所有的字段,等同于指定出所有的字段名,因此如果要查询所有字段的数据,一般都是用*. 2.去重查询:select distinct 字段1,字段2... form tablename: 可以结合上一张图的结果来对比. 3.直接在查询时做数学四则运算,加减乘除余: 4.查询时给查询结果字段重命名:select 字段1 as 名称1,字段2 as 名称2 ... from ta

LEFT JOIN 多表查询的应用

表结构如下:只把主要字段列出 表一:付款记录表  Gather 字段:GatherID , AccountID, PayMents 金额, PayWay  付款方式 1 现金 2 刷卡 表2:销售记录表 Account 字段:AccountID 仓库:StorageID 时间:BeginTime   销售时间 表3:仓库表 Storage 字段 StorageID StorageName 现要求查出某个仓库某给时间段 总营业收入,现金收入,刷卡收入 SQL语句如下: SELECT S.Stora

sqlserver 查询 inner join 同一表2次 只出一条查询结果

inner join T_MTN_MobileNumber k on 1=1 and k.hddm='01' inner join (select a.hdxx+','+b.hdxx as hdxx from T_MTN_MobileNumber a cross join T_MTN_MobileNumber b where a.hddm='02' and b.hddm='03') m on 1=1

Django的ORM表查询

目录 Django的ORM表查询 单表查询 多表查询 聚合查询 分组查询 F与Q查询 Django的ORM表查询 先创建一个数据库,做前期准备 为了方便测试,不再进行urls对应关系和views的书写,直接测试的单个文件 那么如何只单独测试Django中的某个py文件,有以下方法 在任意一个py文件中书写以下代码 可以在应用app的目录下的tests.py中书写 也可以自己建立一个py文件书写 import os if __name__ == "__main__": os.enviro

如何有效的遍历django的QuerySet

最近做了一个小的需求,在django模型中通过前台页面的表单的提交(post),后台对post的参数进行解析,通过models模型查询MySQL,将数据结构进行加工,返回到前台页面进行展示.由于对django中QuerySet特性的不熟悉,所以测试过程中发现了很多问题. 开始的阶段没有遇到什么问题,我们举例,在models有一张员工表employee,对应的表结构中,postion列表示员工职位,前台post过来的参数赋给position,加上入职时间.离职时间,查询操作通过models.fil