當查詢結果是多個的時候,django-ORM會返回一個 **查詢集(QuerySet)** ,表示從數據庫中獲取對象的 **集合** 。
查詢集可以使用過濾器進行再次處理。
例如查詢閱讀量大于20且評論數大于30的書
```
>>> book = Book.objects.filter(b_read__gt=20)
>>> book.filter(b_comment__gt=30)
<QuerySet [<Book: 天龍八部>]>
```
因為查詢集類似一個集合,所以可以對查詢集進行取下標或者切片等操作(索引不支持負數)。
查詢閱讀數大于20的結果,再取下標為1 的數據。
```
>>> book = Book.objects.filter(b_read__gt=20)
>>> book[1]
<Book: 雪山飛狐>
```
## 查詢集兩大特性
### 1. 惰性執行
創建查詢集不會訪問數據庫,直到調用數據時,才會訪問數據庫,調用數據的情況包括迭代、序列化、與if合用
### 2. 緩存
使用同一個查詢集,第一次使用時會發生數據庫的查詢,然后Django會把結果緩存下來,再次使用這個查詢集時會使用緩存的數據,減少了數據庫的查詢次數。
- 1.介紹
- 2.工程搭建
- 2.1.環境配置
- 2.2.創建工程
- 2.3.創建子應用
- 2.3.1.pycharm打開項目
- 2.4.創建視圖
- 3.基本配置
- 3.1.settings基本配置項
- 3.2.路由配置
- 4.請求響應
- 4.1.request
- 4.2.response
- 4.3.cookie
- 4.4.session
- 5.類視圖中間件
- 5.1.類視圖
- 5.2中間件
- 6.數據庫
- 6.1.數據庫配置
- 6.2定義模型類
- 6.3數據庫遷移
- 6.4數據庫操作
- 6.5查詢集
- 6.6模型管理器
- 7.模板表單
- 7.1使用模板
- 7.2模板標簽
- 7.3表單
- 8.后臺管理
- 8.1Admin
- 8.2自定義模型類樣式
- 8.3列表頁