(三)匹配符的使用
1、匹配符表
2、案例演示
1、查询职业表里job包含“开发”的记录
- 使用__contains匹配符来实现
- 使用原生的SQL语句完成相同的任务
2、查询职业表里薪资为8000、12000、20000的记录
- 使用__in匹配符来实现
- 使用原生的SQL语句完成相同的任务
3、查询职业表里薪资在10000与20000之间的记录
- 使用__range匹配符来实现
- 使用原生的SQL语句来完成同样的任务
(四)查询多表数据
- index_vocation表
- index_personinfo表
1、正向查询:通过主表查子表
- 查找职业表id=2的记录的人员信息
- 查找薪资在10000及以上的人员信息
2、反向查询:通过子表查主表
- 查询人员信息表中id=2的职业信息
在定义Vocation模型时设置了related_name=‘ps’,在反查时只能通过“ps”去找对象PersonInfo,否则可以使用以下方式:
v = p.vocation_set.first()
print(p.name, v.job, v.title, v.payment)
(五)使用select_related()实现关联查询
1、利用PersonInfo关联查询Vocation
- 查询人员姓名及薪资(姓名来自PersonInfo对象,薪资来自Vocation对象),对应逆向查询
- 不妨查看一下框架帮我们生成的关联查询语句
- 到Navicat里去运行上面的查询语句(采用的是左外连接)
2、利用Vocation关联查询PersonInfo
查询薪资在12000及以上的职业、姓名、年龄与薪资
- 方法一、利用Vocation关联查询PersonInfo (正向关联查询)—— 外键
- 方法二、利用PersonInfo关联查询Vocation(逆向关联查询)——关联名