前言: 胡斌意淫到了唐朝沒實現了一夫一妻制了想法,但是老婆多了,孩子多了就很差查找,這個時候他就跪着找到了華哥哥,請華哥幫忙,華哥打開了電腦在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) 結果: '小東蒙'