DjangoORM的增删改查

根据这个进行模型类的创建

添加

  • 添加数据的两种方法
    在这里插入图片描述
  • 添加完书本的数据后就可以添加人物的数据了,
  • 添加人物数据的时候要注意外键
    在这里插入图片描述

修改数据

在这里插入图片描述

删除数据

hzhu = HeroInfo.objects.get('要删除的数据的条件')
例如:
删除数据等于18的数据
hzhu = HeroInfo.objects.get(id=18)
hzhu.delete()
sha_li = HeroInfo.objects.filter(id = 19)
sha_li.delete()

查询

基本查询

在这里插入图片描述
在这里插入图片描述

过滤查询

filter 过滤出满足条件的多个结果
exclude 排除掉符合条件剩下的结果

查询出了所有符合查询条件的数据在这里插入图片描述
查询出了除了沙僧的所有数据
在这里插入图片描述

contains 是否包含
说明:如果要包含%无需转义直接写即可

查询出了所有名字包含黄的数据
在这里插入图片描述

in:是否包含在范围内

例如:
查询了编号为1或3或5的书
注意这里不是1到3到5的范围而是列表中写了什么就查什么
在这里插入图片描述

isnull 查询是否空

例如
查询书籍名不为空的数据
在这里插入图片描述

gt 大于
gte 大于等于
lt 小于
lte 小于等于

在这里插入图片描述

不等于运算符可以使用exclude()过滤器

例如
查询id不等于3的数据
在这里插入图片描述

year,month,day,week_dat,hour,minute,second
对日期时间类型的属性进行运算

例如
查询1980年发布的书
在这里插入图片描述

startswith
endswith
以指定值开头或结尾

例如
查询以部结尾的图书
在这里插入图片描述

F

实现属性之间的比较

导包  
from django.db.models import F

例如

阅读量大于等于评论量
BookInfo.objects.filter(bread__gte = F('bcomment'))
阅读量大于等于2倍评论量
BookInfo.objects.filter(bread__gte = F('bcomment')*2)

Q

导包
from django.db.models import Q

用于实现mysql里的not and or

not ~
and &
or |

例如
查询阅读量大于20 并且 编号小于3的数据
and
在这里插入图片描述
or
阅读量大于20或者编号小于3的数据
在这里插入图片描述
not
编号不等于3的数据
在这里插入图片描述

聚合函数

aggregate返回值是字典

Avg 平均,Count数量,Sum计数,Max最大值,Min最小值
导包
from django.db.models import Avg, Count, Sum, Max, Min 

在这里插入图片描述
求数量的时候可以直接使用count函数
在这里插入图片描述

排序

order_by
按照阅读量的正倒序排序
在这里插入图片描述

关联查询

获取一对多数据库多的那方的数据

  • 一的对象.多的模型类小写_set.all()
    在这里插入图片描述

获取多对一数据库一的那方的数据

  • 直接使用外键即可
    在这里插入图片描述

关联过滤查询

查询一的模型 条件是对多的一方属性进行判断

  • 查询英雄是郭靖的书籍
  • 条件如果需要关联模型的字段 那么就使用关联模型类小写__属性名__条件运算符 = ‘xxx’
  • 查询图书 书的英雄描述包含掌
    在这里插入图片描述

查询多的模型 条件是一的一方属性进行判断

  • 条件使用关联的模型类的字典
  • 模型类外键名__模型类属性名__条件运算符
  • 查询天龙八部里的英雄
  • 查询阅读量大于等于20的书的所有英雄
    在这里插入图片描述

查询集的特性

惰性查询

  • 查询集如果没有使用 msyql是不执行语句的
    查询所有英雄
    heros = HeroInfo.objects.all()
    这时去查看mysql日志发现没有执行
    然后 对hero做一个遍历
    再去查看mysql日志发现已经执行

缓存

同一个查询集对象,在第一次使用的使用会把结果缓存,后再次使用的时候,不再查询 直接使用缓存的结果
在这里插入图片描述

判断查询集是否为空

exists()方法 返回True有数据 False没有数据

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值