Django中的基於雙下劃線的連表查詢

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