当前位置:网站首页>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字段名__从表模型类中的字段名__查询类型=值)
边栏推荐
- Writing file types generated by C language
- The difference between viewpager2 and viewpager and the implementation of viewpager2 in the rotation chart
- What development models did you know during the interview? Just read this one
- ViewPager2和VIewPager的區別以及ViewPager2實現輪播圖
- 喜马拉雅网页版每次暂停后弹窗推荐下载客户端解决办法
- 细说Mysql MVCC多版本控制
- Gym - 102219j kitchen plates (violent or topological sequence)
- CDZSC_2022寒假个人训练赛21级(1)
- Difference between process and thread
- AI从感知走向智能认知
猜你喜欢
Applet sliding, clicking and switching simple UI
Performance optimization record of the company's product "yunzhujia"
能源路由器入门必读:面向能源互联网的架构和功能
PLC信号处理系列之开关量信号防抖FB
Arthas simple instructions
Pytest learning - dayone
Deep understanding of UDP, TCP
Future development blueprint of agriculture and animal husbandry -- vertical agriculture + artificial meat
AI moves from perception to intelligent cognition
[Frida practice] "one line" code teaches you to obtain all Lua scripts in wegame platform
随机推荐
[untitled]
“十二星座女神降临”全新活动推出
How does mongodb realize the creation and deletion of databases, the creation of deletion tables, and the addition, deletion, modification and query of data
flinkcdc采集oracle在snapshot阶段一直失败,这个得怎么调整啊?
PostgreSQL创建触发器的时候报错,
PostgreSQL reports an error when creating a trigger,
终于可以一行代码也不用改了!ShardingSphere 原生驱动问世
大佬们,请问 MySQL-CDC 有什么办法将 upsert 消息转换为 append only 消
How to become a senior digital IC Design Engineer (5-2) theory: ULP low power design technology (Part 1)
如何成为一名高级数字 IC 设计工程师(5-2)理论篇:ULP 低功耗设计技术精讲(上)
Natapp intranet penetration
How will fashion brands enter the meta universe?
第十四次试验
Main (argc, *argv[]) details
Write it into the SR table in the way of flinksql. It is found that the data to be deleted has not been deleted. Refer to the document https://do
Pytest learning - dayone
CDZSC_2022寒假个人训练赛21级(2)
Analyze Android event distribution mechanism according to popular interview questions (II) -- event conflict analysis and handling
Liunx command
phpcms实现PC网站接入微信Native支付