Python-Django 模型層-多表查詢-2

-related_name:基於雙下劃線的跨表查詢,修改反向查詢的字段

-related_query_name:基於對象的跨表查詢,修改反向查詢字段

publish = ForeignKey(Blog, related_name='bookList')
複製代碼
# 練習: 查詢人民出版社出版過的全部書籍的名字與價格(一對多)

# 反向查詢 再也不按表名:book,而是related_name:bookList


    queryResult=Publish.objects
              .filter(name="人民出版社")
              .values_list("bookList__title","bookList__price") 

-聚合查詢:(聚合函數的使用)aggregate

from django.db.models import Count,Max,Min,Avg,Sum
ret=models.Book.objects.all().aggregate(aa=Avg('price'))數據庫

 


-分組查詢annotate
#終極總結

group by 誰,就以誰作基表
values在前:表示group by
values在後:取值
filter在前:表示where條件
filter在後: 表示having

 

-F和Q查詢

F查詢幹什麼用? 取出數據庫中某個字段的值,而後進行運算
Q查詢是幹什麼用的?表示出或 與 非 的狀況,用的最多的是或的狀況django

 


-在實際開發中,外鍵一般不用

-約束性太強
-查詢效率會變低
-db_constraint=False orm建立表的時候,外鍵就沒了函數

 


-建外鍵約束,包括unique,都是爲了避免寫髒數據

TTL

-related_name:基於雙下劃線的跨表查詢,修改反向查詢的字段
-related_query_name:基於對象的跨表查詢,修改反向查詢字段

-聚合查詢
-aggregate(聚合函數)
-分組查詢:
'''
gruop by 誰就以誰作基表
filter在前,表示where條件
filter在後,表示havaing
values在前,表示group by的字段
values在後,表示取值
'''spa

 



F和Q查詢
-F:取出數據庫某個字段的值

Q:構造出與(&)或(|)非(~)得關係

圖書管理系統:
code

相關文章
相關標籤/搜索