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()