前言
前面學習了一對一查詢,今天學習一下外鍵(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='黃金會員')