django框架學習:二十九.django 外鍵(ForeignKey)使用,查詢


前言

前面學習了一對一查詢,今天學習一下外鍵(ForeignKey)使用查詢

models.py 

在上篇的基礎上,在添加一張銀行信息。

 

 將銀行卡信息和Card表關聯。

 

 之后執行 makemigrations 和migrate,同步數據

python manage.py makemigrations
python manage.py migrate

shell模式新增數據

進入到manage.py文件目錄,cmd進入命令行頁面

輸入:python manage.py shell

新增數據

先導入包

from ke25.models import Card,BankInformation

創建數據:

 

查詢數據庫:

BankInformation表

 

 

正向查詢

根據Card的信息取查詢BankInformation相關聯的銀行卡信息

 cardinfo = Card.objects.get(card_id='0002')

反向查詢_set

假如想通過“銀行名稱”反向查詢銀行關聯的多少銀行卡,並且能夠查詢每個銀行卡的信息,當ForeignKey沒設置related_name參數,默認是通過關聯表的名稱加_set去查詢。

  • 查詢結果是QuerySet集合對象
  • count()函數統計查詢個數
  • [0].card_id 下標取值,獲取對應屬性

 

 

 related_name

Card的外鍵只有一個時,可以通過_set去查詢到,當有多個外鍵時,就無法查詢具體哪個外鍵了,這時候就需要加個related_name參數。related_name參數相當於給這個外鍵取了個別名,方便多個外鍵時候去識別。以下是新增數據和正向查詢

當定義了related_name后”_set”這類查詢就被related_name代替了,所以用”_set”會報錯。

 

 反向查詢需要用到related_name參數,如下

nn=Card_Grade.objects.get(nub='黃金會員')

nn.cardgrade.all() <QuerySet [<Card: 0005>]>

 nn.cardgrade.all()[0].card_id '0005'

# BankInformation表查Card表

bb=BankInformation.objects.get(bank_name='上海銀行')

 bb.card_bank.all() <QuerySet [<Card: 0005>]>

bb.card_bank.all()[0].card_id '0005'


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM