基於物件的跨表查詢

2022-09-10 08:27:09 字數 1808 閱讀 1261

正向查詢(按欄位:publish):

#

查詢主鍵為1的書籍的出版社所在的城市

book_obj=book.objects.filter(pk=1).first()

#book_obj.publish 是主鍵為1的書籍物件關聯的出版社物件

print(book_obj.publish.city)

反向查詢(按表名:book_set):

publish=publish.objects.get(name="

蘋果出版社")

#publish.book_set.all() : 與蘋果出版社關聯的所有書籍物件集合

book_list=publish.book_set.all()

for book_obj in

book_list:

print(book_obj.title)

正向查詢(按欄位:authordetail):

egon=author.objects.filter(name="

egon

").first()

print(egon.authordetail.telephone)

反向查詢(按表名:author):

#

查詢所有住址在北京的作者的姓名

authordetail_list=authordetail.objects.filter(addr="

beijing")

for obj in

authordetail_list:

print(obj.author.name)

正向查詢(按欄位:authors):

#

金瓶眉所有作者的名字以及手機號

book_obj=book.objects.filter(title="

金瓶眉"

).first()

authors=book_obj.authors.all()

for author_obj in

authors:

print(author_obj.name,author_obj.authordetail.telephone)

反向查詢(按表名:book_set):

#

查詢egon出過的所有書籍的名字

author_obj=author.objects.get(name="

egon")

book_list=author_obj.book_set.all() #

與egon作者相關的所有書籍

for book_obj in

book_list:

print(book_obj.title)

注意:

你可以通過在 foreignkey() 和manytomanyfield的定義中設定 related_name 的值來覆寫 foo_set 的名稱。例如,如果 article model 中做一下更改:

publish = foreignkey(book, related_name='

booklist

')

那麼接下來就會如我們看到這般:

#

查詢 人民出版社出版過的所有書籍

publish=publish.objects.get(name="

人民出版社")

book_list=publish.booklist.all() #

與人民出版社關聯的所有書籍物件集合

基於物件的orm跨表查詢再練習

model.py from django.db import models create your models here.class book models.model nid models.autofield primary key true title models.charfield max...

基於雙下劃線的跨表查詢

django 還提供了一種直觀而高效的方式在查詢 lookups 中表示關聯關係,它能自動確認 sql join 聯絡。要做跨關係查詢,就使用兩個下劃線來鏈結模型 model 間關聯欄位的名稱,直到最終鏈結到你想要的model 為止。正向查詢按欄位,反向查詢按表名小寫用來告訴orm引擎join哪張表...

mysql跨庫跨表查詢

簡單記錄 select from dysns.uchome pay record,91feile.phpcms game where uchome pay record.uid phpcms game.touserid select from dysns.uchome pay record,91fe...