7.5查詢集QuerySet&7.6管理器Manager

7.5.1概念

查詢集,也稱查詢結構集、QuerySet,表示從數據庫中獲取的對象集合

7.5.2獲取查詢集

all():返回所有數據

filter():返回滿足條件的數據

exclude():返回滿足條件之外的數據

order_by():對結果進行排序

對查詢集可以再次調用過濾器進行過濾

如:

BookInfo.objects.filter(bread__get=30).order_by('bpub_date')

7.5.3兩大特性

(1)惰性執行

創建查詢集不會訪問數據庫,直到調用數據時,返回訪問數據庫,調用數據的情況包括迭代、序列化、與if合用

不會訪問數據庫: qs = BookInfo.objects.all()

訪問數據庫:

for book in qs:

print(book.btitle)

(2)緩存

使用同一個查詢集,第一次使用時會發生數據庫的查詢,然後django會把結果緩存下來,再次使用這個查詢集時會使用緩存的數據,減少了數據庫的查詢次數

7.5.4限制查詢集

等同於數據庫中的limit語句

如:

qs = BookInfo.objects.all()[0:2]

注意:不支持負數索引

7.6管理器Manager

7.6.1概念

管理器是Django的模型進行數據庫操作的接口,Django應用的每個模型類都擁有至少一個管理器。

7.6.3管理器對象objects

是模型管理器類Manager自動實例化出來的對象

用於調用模型提供的各種工具方法

7.6.3自定義管理器

(1)注意:一旦爲模型類指明自定義的過濾器後,django不再生成默認管理對象objects

(2)自定義管理器需求

當管理器提供的功能無法滿足當前需求時,可以自定義管理器,擴充功能

(3)自定義方式

class BookInfoManager(models.Manager):

pass

books = BookInfoManager()

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章