表於表的查詢

一對多的表結構 外鍵是在多的那張表裏面建的。以下圖git

 

#書和出版社是多對一的關係。
#
class Book(models.Model):
    title = models.CharField(max_length=32)
    publish_date = models.DateField(auto_now_add=True)
    price = models.DecimalField(max_digits=5, decimal_places=2)
    # 建立外鍵,關聯publish
    publisher = models.ForeignKey(to="Publisher") #出版社
class Publisher(models.Model):
    name = models.CharField(max_length=32)
    city = models.CharField(max_length=32)

數據以下spa

 

1 正向查詢(有外鍵的類)code

 使用values('你類中外鍵的那個字段,而後__外鍵的那個的字段') 就能夠查詢了。以下圖對象

 

 

 

ForeignKey操做

正向查找

對象查找(跨表)

以下的方法blog

get()ci

first()get

last()it

語法:ast

對象.關聯字段.字段class

 

示例:

book_obj = models.Book.objects.first()  # 第一本書對象
print(book_obj.publisher)  # 獲得這本書關聯的出版社對象
print(book_obj.publisher.name)  # 獲得出版社對象的名稱

 

字段查找(跨表)

all()

filter()

exclude()

order_by()

reverse()

distinct()

語法:

關聯字段__字段

示例:

print(models.Book.objects.values_list("publisher__name"))

 

 

 

反向操做

對象查找

get()

first()

last()

語法:

obj.表名_set

示例:

publisher_obj = models.Publisher.objects.first()  # 找到第一個出版社對象
books = publisher_obj.book_set.all()  # 找到第一個出版社出版的全部書
titles = books.values_list("title")  # 找到第一個出版社出版的全部書的書名

字段查找

all()

filter()

exclude()

order_by()

reverse()

distinct()

語法:

表名__字段

示例:

titles = models.Publisher.objects.values_list("book__title")
相關文章
相關標籤/搜索