💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
**管理器(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: 水浒传> ```