**管理器(Manager)** 是Django的模型進行數據庫操作的接口,Django應用的每個模型類都擁有至少一個管理器。
前邊我們查詢時候用到的 `objects` 就是查詢器。
它是沒有為模型類定義管理器時,Django為我們默認生成的管理器。
## 自定義管理器
我們可以為模型類自定義管理器,對查詢結果做出限制。使用了自定義管理器后,django將不會再生成 `objects` 管理器。
自定義管理器需要繼承`models` 包下的 `Manager` 類。
創建自定義管理器示例:
```python
from datetime import datetime
class BookManager(models.Manager):
# 重寫父類all方法,只返回is_delete為False的字段
def all(self):
return super().filter(is_delete=False)
# 自定義方法新增書籍
def create_book(self, title):
book = self.model()
book.b_title = title
book.b_pub_date = datetime.now()
book.b_read = 0
book.b_comment = 0
book.is_delete = False
book.save()
return book
```
上邊的例子中,我們重寫了父類的 `all` 方法,當使用 `all` 命令的時候,只返回 `is_delete` 為 `False` 的字段。
為模型類添加自定義管理器
```python
class Book(models.Model):
...
book = BookManager()
```
使用示例:
查詢所有書
```python
Book.book.all()
```
新建一本書
```python
>>> Book.book.create_book("水滸傳")
<Book: 水滸傳>
```
- 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列表頁