**管理器(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列表页