IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> Django(05):模型管理器 -> 正文阅读

[Python知识库]Django(05):模型管理器

默认管理器

每一个模型类都拥有一个默认管理器,如果不指定默认管理器,默认使用object

from booktest.models import BookInfo
BookInfo.objects.all()

如果想要指定相对应的管理器,管理器的对象为models.Manager

class BookInfo(models.Model):
    btitle = models.CharField(max_length=20)
    bpub_date = models.DateTimeField(db_column='pub_date')
    bread = models.IntegerField(default = 0)
    bcomment = models.IntegerField(default = 0, null = False)
    isDelete = models.BooleanField(default=False)
    class Meta:
        db_table = 'bookinfo'
    def __str__(self):
        return self.btitle
    book1 = models.Manager()

此时就是指定boo1为BookInfo模型管理器

自定义管理器

除了默认的管理器意外,我们还可以自定义管理器

修改默认的查询集

# 自定义管理器
class BookInfoManager(models.Manager):
    # 重写获取查询集的方法 只有isDelete=False的数据才保留
    def get_queryset(self):
        return super(BookInfoManager, self).get_queryset().filter(isDelete = False)

# Create your models here.
class BookInfo(models.Model):
    btitle = models.CharField(max_length=20)
    bpub_date = models.DateTimeField(db_column='pub_date')
    bread = models.IntegerField(default = 0)
    bcomment = models.IntegerField(default = 0, null = False)
    isDelete = models.BooleanField(default=False)
    class Meta:
        db_table = 'bookinfo'
    def __str__(self):
        return self.btitle
    book1 = models.Manager() # 指定book1为BookInfo的模型管理器
    book2 = BookInfoManager()

创建添加的方法

class BookInfoManager(models.Manager):
    # 重写获取查询集的方法 只有isDelete=False的数据才保留
    def get_queryset(self):
        return super(BookInfoManager, self).get_queryset().filter(isDelete = False)
    # 创建对象的方法
    def create(self, btitle, bpub_date):
        b = BookInfo()
        b.btitle = btitle
        b.bpub_date = bpub_date
        b.bread = 0
        b.bcomment = 0
        b.isDelete = False
        return b

模型查询

常用函数

  1. all():返回所有的数据
  2. filter():过滤满足条件的数据
  3. exclude():过滤不满足条件的数据
  4. get():返回单个满足条件的值
    注意:get()只能返回结果是唯一的情况。
    如果结果不唯一,则会抛出MultipleObjectsReturned异常
    如果找不到,会抛出DoesNotExist异常
  5. order_by():排序
  6. values():把对象中的属性构造成字典,并返回列表
  7. count():返回查询的总条数
  8. first():返回第一个对象
  9. last():返回最后一个对象
  10. exists():查询结果中是否存在数据

子查询运算符

格式:属性名_ _比较运算符 = 值

  1. exact:判断相等。如果没有写就是exact
  2. contains:是否包含某个子串
  3. startswith:以某个子串开头
  4. endswith:以某个子串结尾
  5. isnull:为空
  6. isnotnull:不为空
  7. in:是否包含在范围内
  8. gt:大于
  9. gte:大于等于
  10. lt:小于
  11. lte:小于等于
  • 跨表查询
    格式:模型类名_ _属性名_ _比较

聚合函数

使用aggregate()函数返回聚合函数中的值
聚合函数包括:

  • Avg():求平均
  • Count():总数
  • Max():最大值
  • Min():最小值
  • Sum():总和

F对象与Q对象

  • F对象
    一般情况下,字段都是写在等号的左边,如果要把字段写在等号的右边,需要使用F对象
  • Q对象
    如果要进行或操作,需要使用Q对象
  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-09-26 10:07:25  更:2021-09-26 10:09:23 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 15:32:19-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码