正反向 多表查詢

2022-08-31 22:27:29 字數 2815 閱讀 3862

#正向#

反向外來鍵字段在我手上那麼,我查你就是正向

外來鍵字段如果不在手上,我查你就是反向

book >>>外來鍵字段在書那兒(正向)>>>publish

publish >>>外來鍵字段在書那兒(反向)>>>book

一對一和多對多正反向的判斷也是如此

"""正向查詢按欄位

反向查詢按表名小寫

_set

..."""

#

1.查詢書籍主鍵為1的出版社

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

## 書查出版社 正向

#res = book_obj.publish

#print(res)

#print(res.name)

#print(res.addr)

#2.查詢書籍主鍵為2的作者

#book_obj = models.book.objects.filter(pk=2).first()

## 書查作者 正向##

res = book_obj.authors.all() # , ]>##

print(res)

#3.查詢作者jason的**號碼

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

#res = author_obj.author_detail

#print(res)

#print(res.phone)

#print(res.addr)

"""在書寫orm語句的時候跟寫sql語句一樣的

不要企圖一次性將orm語句寫完 如果比較複雜 就寫一點看一點

正向什麼時候需要加.all()

當你的結果可能有多個的時候就需要加.all()

如果是乙個則直接拿到資料物件

book_obj.publish

book_obj.authors.all()

author_obj.author_detail

"""#

4.查詢出版社是東方出版社出版的書

#publish_obj = models.publish.objects.filter(name='東方出版社').first()

#出版社查書 反向##

res = publish_obj.book_set.all()

#print(res)

#5.查詢作者是jason寫過的書

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

#作者查書 反向##

res = author_obj.book_set.all()

#print(res)

#6.查詢手機號是110的作者姓名

#author_detail_obj = models.authordetail.objects.filter(phone=110).first()

#res = author_detail_obj.author

#print(res.name)

"""基於物件

反向查詢的時候

當你的查詢結果可以有多個的時候 就必須加_set.all()

當你的結果只有乙個的時候 不需要加_set.all()

自己總結出 自己方便記憶的即可 每個人都可以不一樣

"""

#

基於雙下劃線的跨表查詢

#1.查詢jason的手機號和作者姓名

#res = models.author.objects.filter(name='jason').values('author_detail__phone','name')

#print(res)#反向

#res = models.authordetail.objects.filter(author__name='jason') # 拿作者姓名是jason的作者詳情

#res = models.authordetail.objects.filter(author__name='jason').values('phone','author__name')

#print(res)

#2.查詢書籍主鍵為1的出版社名稱和書的名稱

#res = models.book.objects.filter(pk=1).values('title','publish__name')

#print(res)#反向

#res = models.publish.objects.filter(book__id=1).values('name','book__title')

#print(res)

#3.查詢書籍主鍵為1的作者姓名

#res = models.book.objects.filter(pk=1).values('authors__name')

#print(res)#反向

#res = models.author.objects.filter(book__id=1).values('name')

#print(res)

#查詢書籍主鍵是1的作者的手機號

#book author authordetail

#res = models.book.objects.filter(pk=1).values('authors__author_detail__phone')

#print(res)

"""你只要掌握了正反向的概念

以及雙下劃線

那麼你就可以無限制的跨表

"""

django正反向查詢

django正反向查詢 當我們的表存在外來鍵想要從一找多的時候該怎麼查詢,當我們從多找一的時候又應該怎麼查詢.一找多首先我們要建立乙個專案,在專案的model.py中建立兩個模型.from django.db import models class usertype models.model tit...

序列化正反向查詢

序列化 正向查詢 from rest framework import serializers from users.models import userinfo 正向查詢 class userinfoserializer serializers.serializer 類名小寫.外來鍵字段 good...

Django之ORM正反向查詢

在orm查詢中,一般分為正向查詢和反向查詢。至於什麼是正向查詢和反向查詢,還要從表關係說起。舉個簡單的例子,就拿圖書和出版社來說,一般乙個圖書只有乙個出版社,但是乙個圖書一般有多個圖書,外來鍵關係一般建立在多的一側,也就是說,外來鍵關係是建立在圖書的表模型中的。而正向查詢就是從多的一側出發,即圖書表...