2022-10-01 關聯查詢: 在Django項目中使用ORM模式設置表後,進行關聯查詢,即兩個表直接有聯繫的查詢。 方式: 可以通過主表查詢從表,也可以通過從表查詢主表。 方式一實例: (1)查詢編號為1的圖書中的人物 前提環境,進入pycharm,進入虛擬環境、進入shell環境。 首先,需要 ...
2022-10-01
關聯查詢:
在Django項目中使用ORM模式設置表後,進行關聯查詢,即兩個表直接有聯繫的查詢。
方式:
可以通過主表查詢從表,也可以通過從表查詢主表。
----------------
方式一實例:
(1)查詢編號為1的圖書中的人物
前提環境,進入pycharm,進入虛擬環境、進入shell環境。
首先,需要導入模塊,先查詢書籍編號為1的圖書,後在此書中查詢包含的人物。
from book.models import BookInfo1
book = BookInfo1.objects.get(id = 1)
通過主表查詢從表信息
book.personinfo_set.all()
註:我的天吶,姐妹們,要註意了,“personinfo_set”後面是沒有括弧的,不加括弧類似於系統預設給定的屬性值。大早上的,搞人心態,暈~~~。
說明:其中"personinfo"表中的欄位有“id”、“name”、“gender”、“description”、“is_delete”、“book_id”。
--------------------
方式二:
通過從表查看主表,查詢人物為1的書籍信息
導入模塊,先查詢到人物編號為1的記錄,在查詢信息。
from book.models import PersonInfo
person = PersonInfo.objects.get(id = 1)
person.book
查看所在書籍的名稱
person.book.name
------------------------------------------
關聯查詢的篩選
兩種方式:
同上,篩選條件一種是通過主表查詢從表,一種是通過從表查詢主表。
方式一:
實例:查詢圖書,要求人物中包含“顧里”
同理,首先需要導入模塊,
from book.models import BookInfo1
進行查詢:
BookInfo1.objects.filter(personinfo__name = "顧里")
說明:使用到“關聯模型表的小寫”是因為“BookInfo”是一個主表,預設包含了“personinfo”。如果表中含有外鍵,那麼它是一個從表。
-----------------
方式二:
通過從表查看主表
實例:查詢人物,要求是編號為1的書籍中
首先,同理,還是先導入模塊,之後由於是從表中所以內部包含了外鍵,直接通過包含外鍵的屬性“book”進行調用。
from book.models import PersonInfo
PersonInfo.objects.filter(book__id = 1)