前言: 胡斌意淫到了唐朝没实现了一夫一妻制了想法,但是老婆多了,孩子多了就很差查找,这个时候他就跪着找到了华哥哥,请华哥帮忙,华哥打开了电脑在Django中为了实现了多表的跨表查询,为了答谢华哥,他就跪下了,伸出了头,,,,,,,,,, 本节就是讲到基于双下划线的跨表查询(join),华哥是一个很纯洁的人今天就放过胡斌,就拿图书管理系统说话,后宫管理系统的个表你们须要意淫,就不说了.
基于双下划线的跨表查询(join)python
'一对一' 正向连表,靠属性*************必定记得靠属性 查看'胡斌'(老公)的战场在哪里?******也就是这会出现做者表和做者详情表也就是典型的一对一的查询 ret = models.Husband.objects.filiter(name='胡斌').values(ad__addr)#######ad就是author表中创建的做者表和做者详情表的外键(ad = models.ForeignKey('HusbandDetail',on_delete=models.CASCADE)) print(ret) --------结果确定是相机前 那咱们来看看胡斌的老婆是谁 ret=models.Husband.objects.filiter(name='胡斌').values(ad__wife)#######斌哥虽然女人多,咱们都知道你的老婆永远只有一个 print(ret) 结果就是 '东盟' '反向连表'*********必定必定要记住靠的是类名的小写 查看'胡斌'(老公)的战场在哪里? ret=models.HusbandDetail.objects.filiter(author__name='胡斌').values('addr') print(ret) 结果: 相机前 那咱们来看看胡斌的老婆是谁? ret=models.HusbandDetail.objects.filiter(author__name='胡斌').values('wife') print(ret) 结果 '善东盟' 练习: 查看一下胡斌的爸爸是谁? ret=models.Husband.objects.filiter(name='胡斌').valuse(ad__father) print(ret) 结果: '熊华' 反向查询胡斌的爸爸是谁? ret=models.HusbandDetail.objects.filiter(author__name='胡斌').values('father') 结果: '熊华'
'正向查询 查询东蒙生的孩子有哪些 ret=models.Wife.objects.filiter(name='东萌').valuse('childs__name') 来检验下就来个输出DNA检测结果 print(ret) '结果: 熊一,熊二,熊三 '反向来检测一下 ret=models.Children.filiter(wife__name='东盟).valuse('name') '结果': 熊一,熊二,熊三 '总结: '胡斌的老婆比较专注,专注的爱着隔壁老熊 '咱们来练习已发(不要只是意淫,来个实战): 查看东萌的孩子家住哪里 '正向查询 ret=models.Wife.objects.filiter(name='东萌').values('childs__addr') print(ret) 结果是: 熊华家 '反向查询 ret=models.Children.objects.filiter(wife__name='东蒙').values('addr') 结果是: 熊华家 总结:好兄弟都是本身人
查询一下熊二的朋友有哪些 ret=models.Children.object.filiter(name='熊二').values('friends__name') print(ret) 结果: '小东蒙' 反向查询 ret=models.Friend.object.filiter(children__name='熊二').values('name') print(ret) 结果: '小东蒙'