django 之 ORM操作多表聯查總結

2022-05-10 20:54:21 字數 2937 閱讀 3946

# #####################基於物件查詢(子查詢)##############################

# 按欄位(publish)

# 一對多 book -----------------> publish

# <----------------

# book_set.all()

# 正向查詢按欄位:

# 查詢python這本書籍的出版社的郵箱

# python=models.book.objects.filter(title="python").first()

# print(python.publish.email)

# 反向查詢按 表名小寫_set.all()

# 蘋果出版社出版的書籍名稱

# publish_obj=models.publish.objects.filter(name="蘋果出版社").first()

# for obj in publish_obj.book_set.all():

# print(obj.title)

# 按欄位(authors.all())

# 多對多 book -----------------------> author

# <----------------

# book_set.all()

# 查詢python作者的年齡

# python = models.book.objects.filter(title="python").first()

# for author in python.authors.all():

# print(author.name ,author.age)

# 查詢alex出版過的書籍名稱

# alex=models.author.objects.filter(name="alex").first()

# for book in alex.book_set.all():

# print(book.title)

# 按欄位 authordetail

# 多對多 author -----------------------> authordetail

# <----------------

# 按表名 author

#查詢alex的手機號

# alex=models.author.objects.filter(name='alex').first()

# print(alex.authordetail.telephone)

# 查詢家在山東的作者名字

# ad_list=models.authordetail.objects.filter(addr="shandong")

## for ad in ad_list:

# print(ad.author.name)

'''對應sql:

select publish_id from book where title="python"

select email from publish where nid = 1

'''# #####################基於queryset和__查詢(join查詢)############################

# 正向查詢:按欄位 反向查詢:表名小寫

# 查詢python這本書籍的出版社的郵箱

# ret=models.book.objects.filter(title="python").values("publish__email")

# print(ret.query)

'''select publish.email from book

left join publish on book.publish_id=publish.nid

where book.title="python"

'''# 蘋果出版社出版的書籍名稱

# 方式1:

ret1=models.publish.objects.filter(name="蘋果出版社").values("book__title")

print("111111111====>",ret1.query)

#方式2:

ret2=models.book.objects.filter(publish__name="蘋果出版社").values("title")

print("2222222222====>", ret2.query)

#查詢alex的手機號

# 方式1:

ret=models.author.objects.filter(name="alex").values("authordetail__telephone")

# 方式2:

models.authordetail.objects.filter(author__name="alex").values("telephone")

# 查詢手機號以151開頭的作者出版過的書籍名稱以及書籍對應的出版社名稱

django之orm多表操作1

三種關係 一對一,一對多,多對多 一對一 xx models.onetoonefield to 表名 to field 欄位名 on delete models.cascade 刪除時的一些級聯效果,to field可以不寫,預設是關聯到另一張表的主鍵,on delete在1.x版本的django中...

django之ORM查詢操作(二)

過濾器 基於所給的引數限制查詢的結果 count 返回當前查詢的總條數 aggregate 聚合 exists 判斷查詢集中是否有資料,如果有則返回true,沒有則返回false 2.快取 查詢集的結果被存下來之後,再次查詢相同資料時會使用之前快取的資料 user列表資訊檢視 def userlis...

selenium 操作多表單切換

1.頁面中巢狀了iframe後,iframe中的元素無法定位到,可通過selenium中 driver.switch to.frame 切換到iframe中,再進行定位元素,2.切到iframe中後,可通過 driver.switch to.parent frame 切到上一層表單,也可通過 dri...