当前位置:网站首页>ORM--查询类型,关联查询
ORM--查询类型,关联查询
2022-07-07 07:17:00 【chuntian_tester】
ORM框架中,会给每一个模型类中的主键设置一个别名:pk
models.Projects.objects.filter(id=2)等效于models.Projects.objects.filter(pk=2)
1.filter()和exclude()查询类型
exclude()就是filter()的反向查询
1.1 filter()支持的查询类型:
models.模型类名.objects.filter(字段名__查询类型=xxxx)
补充:
filter(id__gt=2)
filter(id__gte=2)
filter(id__lt=2)
filter(id__lte=2)
1.2 exclude()反向查询
filter()方法支持的查询类型都支持
2.关联查询
当一个模型类中定义了外键时,在给这个模型类对应的表新增数据时,还必须指定将从表新增的数据关联到父表的哪条数据上
2.1 在Interfaces模型类中定义外键,关联Projects模型类
2.2 迁移
迁移后,Interfaces模型类生成的表中会自动 生成外键:外键名_id
2.3 外键关联创建
方式1:
2.3.1 先获取父表模型对象,此处只能用get(),不能用filter(),为何?
2.3.2 将获取的父表模型对象以外键字段名作为参数来传递
用postman请求后查看interfaces表
方式2:
2.3.1 先获取父表模型对象,进而获取父表的id值
2.3.2 将父表 主键值 以 外键名_id 作为参数来传递
2.4 外键关联查询
2.4.1 利用从表数据获取父表数据
利用 .父表模型类名小写 获取
获取包含注册接口的所有项目信息
Interfaces.objects.filter(name__contains='注册接口').first().projects
2.4.2 利用父表数据获取从表数据
利用 从表模型类名小写_set 获取;
或者在从表模型的外键字段中,指定related_name='xxxx':
models.Projects.objects.filter(leader__contains='jeanet')[0].xxxx.all()
获取项目leader=jeanet的所有接口信息:
models.Projects.objects.filter(leader__contains='jeanet')[0].interfaces_set.all()
2.4.3 关联查询
2.4.3.1 通过父表参数来获取从表数据
从表模型类的QuerySet对象(关联属性字段__父表模型类中的字段名__查询类型=值)
2.4.3.2 通过从表参数来获取父表数据
父表模型类的QuerySet对象(从表的related_name字段名__从表模型类中的字段名__查询类型=值)
边栏推荐
- Win10安装VS2015
- 如何成为一名高级数字 IC 设计工程师(1-6)Verilog 编码语法篇:经典数字 IC 设计
- Main (argc, *argv[]) details
- CentOS installs JDK1.8 and mysql5 and 8 (the same command 58 in the second installation mode is common, opening access rights and changing passwords)
- JS逆向教程第一发
- C socke server, client, UDP
- Flinkcdc failed to collect Oracle in the snapshot stage. How do you adjust this?
- CDZSC_2022寒假个人训练赛21级(2)
- [4g/5g/6g topic foundation-146]: Interpretation of white paper on 6G overall vision and potential key technologies-1-overall vision
- Applet sliding, clicking and switching simple UI
猜你喜欢
【frida实战】“一行”代码教你获取WeGame平台中所有的lua脚本
小程序滑动、点击切换简洁UI
Garbage disposal method based on the separation of smart city and storage and living digital home mode
[4G/5G/6G专题基础-146]: 6G总体愿景与潜在关键技术白皮书解读-1-总体愿景
Natapp intranet penetration
能源路由器入门必读:面向能源互联网的架构和功能
喜马拉雅网页版每次暂停后弹窗推荐下载客户端解决办法
H5 web player easyplayer How does JS realize live video real-time recording?
What development models did you know during the interview? Just read this one
Use 3 in data modeling σ Eliminate outliers for data cleaning
随机推荐
Can't connect to MySQL server on '(10060) solution summary
高斯消元
Sword finger offer II 107 Distance in matrix
phpcms实现PC网站接入微信Native支付
Software modeling and analysis
Create an int type array with a length of 6. The values of the array elements are required to be between 1-30 and are assigned randomly. At the same time, the values of the required elements are diffe
Scratch crawler mysql, Django, etc
Applet popup half angle mask layer
C socke server, client, UDP
How to become a senior digital IC Design Engineer (5-3) theory: ULP low power design technology (Part 2)
How to solve the problem of golang select mechanism and timeout
[untitled]
JS逆向教程第一发
Internship log - day07
**Grafana installation**
细说Mysql MVCC多版本控制
Analyze Android event distribution mechanism according to popular interview questions (II) -- event conflict analysis and handling
Oracle installation enhancements error
Guys, how can mysql-cdc convert the upsert message to append only
CentOS installs JDK1.8 and mysql5 and 8 (the same command 58 in the second installation mode is common, opening access rights and changing passwords)