Django
中间件:概述
中间件:自定义
Celery(一)
内置应用的作用
内置中间件的作用
Celery(二)
模型 class Meta
模型 管理器(Manager)
related_name 介绍
prefetch_related 介绍
本文档使用 MrDoc 发布
-
+
首页
模型 管理器(Manager)
### 概述 `管理器(Manager)`是 Django 模型进行数据库操作的接口,默认通过 `objects` 属性访问。它提供了数据库查询的方法,如 `all()`、`filter()`、`create()` 等。 示例: ``` # 自定义管理器 class PublishedManager(models.Manager): def get_queryset(self): """重写查询集方法""" return super().get_queryset().filter(status='published') def create_published(self, **kwargs): """自定义创建方法""" kwargs['status'] = 'published' return self.create(**kwargs) class Article(models.Model): title = models.CharField(max_length=100) status = models.CharField(max_length=20) objects = models.Manager() # 默认管理器 published = PublishedManager() # 自定义管理器 class Meta: db_table = 'articles' # 使用示例 # 使用默认管理器 all_articles = Article.objects.all() # 使用自定义管理器 published_articles = Article.published.all() new_article = Article.published.create_published(title='New Post') ``` ### 常见用途: #### 1. 添加过滤条件 ``` class ActiveManager(models.Manager): def get_queryset(self): return super().get_queryset().filter(is_active=True) ``` #### 2. 添加自定义方法 ``` class OrderManager(models.Manager): def pending(self): return self.filter(status='pending') def completed(self): return self.filter(status='completed') ``` #### 3. 多个管理器 ``` class Post(models.Model): objects = models.Manager() # 默认管理器 published = PublishedManager() # 已发布文章 drafts = DraftManager() # 草稿 ``` ### 主要特点 - 可以自定义查询行为 - 可以添加辅助方法 - 一个模型可以有多个管理器 - 第一个定义的管理器是默认管理器 - 支持链式调用
gaojian
2025年2月6日 09:22
分享文档
收藏文档
上一篇
下一篇
微信扫一扫
复制链接
手机扫一扫进行分享
复制链接
关于 MrDoc
觅思文档MrDoc
是
州的先生
开发并开源的在线文档系统,其适合作为个人和小型团队的云笔记、文档和知识库管理工具。
如果觅思文档给你或你的团队带来了帮助,欢迎对作者进行一些打赏捐助,这将有力支持作者持续投入精力更新和维护觅思文档,感谢你的捐助!
>>>捐助鸣谢列表
微信
支付宝
QQ
PayPal
Markdown文件
分享
链接
类型
密码
更新密码