Django的ORM基础增删改查
查询
- all()
- 返回模型类对应表格中所有数据,返回查询集
 
 - get()
- 返回表格中满足条件的一条且只能有一条数据
 - 如果查到多条数据,则抛异常:MultipleObjectsReturned
 - 查询不到数据,则抛异常:DoesNotExist
 
 - filter()
- 参数写查询条件,返回满足条件的数据,返回查询集
 - 条件格式:模型类属性名__条件名 = 值
 
 
==条件名==
- 判等 exact
list=BookInfo.books.filter(id__exact=1)可简写为:list=BookInfo.books.filter(id=1)
 - 模糊查询
 
- 包含:contains
 - 结尾和开头:endswith;startswith
list = BookInfo.objects.filter(btitle__contains = "部")list = BookInfo.objects.filter(btitle__startswith = "天")
 
- 空查询 isnull
<!--查询标题为空-->BookInfo.objects.filter(btitle__isnull = Flase)
 - 范围查询
BookInfo.objects.filter(id__in=[1,3,5])
 - 比较查询
- 大于:gt
 - 小于:lt
 - 大于等于:gte
BookInfo.objects.filter(id__gt=2)
 
 - 日期查询
BookInfo.objects.filter(bpub_date__year = 1980)BookInfo.objects.filter(bpub_date__gt = date(1980,12,1)
 
- include():查询不满足条件的数据,返回
BookInfo.objects.include(id=3)
 - F对象:类属性之间比较
- 需要导入:from django.db.models import F
demo:查找阅读量大于评论数2倍0的BookInfo.objects.filter(bread__gt = F(bcomment)*2)
 
 - 需要导入:from django.db.models import F
 - Q对象:多个属性之间比较
- 导入模块:from django.db.models import Q
 - 或关系:|
 - 与关系:&
 - 取反:~
BookInfo.objects.filter(Q(bcomment__gt = 40)|Q(bread__gt = 20))BookInfo.objects.filter(~Q(id=3))
 
 - order_by:排序 返回查询集
- 默认从小到大
 - 加 - :从大到小
BookInfo.objects.all().order_by(id)BookInfo.objects.filter(id__gt = 2).order_by('-bread')
 
 - 聚合 aggregate 返回字典
- 对查询结果进行聚合操作
 - sum count max min avg
 - 使用前导入:from django.db.models import Sum
例:查询所有图书的数目。BookInfo.objects.aggregate(Count('id')){'id__count': 5}例:查询所有图书阅读量的总和。BookInfo.objects.aggregate(Sum('bread')){'bread__sum': 126}
 
 - count()函数
 - 作用:统计满足条件数据的数目。
例:统计所有图书的数目。BookInfo.objects.count()注意返回值类型例:统计id大于3的所有图书的数目。BookInfo.objects.filter(id__gt=3).count()
删除
 - 对象.delete()
 
修改
- 获取对象,重新写
 - save():保存
 
查询集
查询集特性
- 惰性查询
- 只有在实际使用查询集中的数据的时候才会发生对数据库的真正查询。
 
 - 缓存
- 当使用的是同一个查询集时,第一次的时候会发生实际数据库的查询,然后把结果缓存起来,之后再使用这个查询集时,使用的是缓存中的结果。
 
 
限制查询集
- b[0]就是取出查询集的第一条数据,- b[0:1].get()也可取出查询集的第一条数据。- 如果b[0]不存在,会抛出IndexError异常,- 如果b[0:1].get()不存在,会抛出DoesNotExist异常。多条时抛MultiObjectsReturned
- 对一个查询集进行切片操作会产生一个新的查询集,下标不允许为负数。
exists():判断一个查询集中是否有数据,有返回True 
参考了北半球网站的相关资料
Django的ORM基础增删改查的更多相关文章
- Python学习---django之ORM的增删改查180125
		
模型常用的字段类型参数 <1> CharField #字符串字段, 用于较短的字符串. #CharField 要求必须有一个参数 maxlength, 用于从数 ...
 - Django之ORM的增删改查操作流程
		
总结:ORM的 查.增.删.改 - 查 - client - 有一个展示页面(xxx_show.html) - 这一个页面一输入执行后,get请求向server端发送 - 这个展示页面有添加按钮.删除 ...
 - Django之ORM数据库增删改查
		
总结:ORM的 查.增.删.改 - 查 - client - 有一个展示页面(xxx_show.html) - 这一个页面一输入执行后,get请求向server端发送 - 这个展示页面有添加按钮.删除 ...
 - Django之ORM的增删改查
		
一.添加表记录 对于单表有两种方式 # 添加数据的两种方式 # 方式一:实例化对象就是一条表记录 Frank_obj = models.Student(name ="海东",cou ...
 - Django ORM 数据库增删改查
		
Django ORM 数据库增删改查 增 # 创建.增加数据(推荐) models.UserInfo.objects.create(username=') # 创建.增加数据 dic = {'} mo ...
 - Python进阶----数据库的基础,关系型数据库与非关系型数据库(No SQL:not only sql),mysql数据库语言基础(增删改查,权限设定)
		
day37 一丶Python进阶----数据库的基础,mysql数据库语言基础(增删改查,权限设定) 什么是数据库: 简称:DataBase ---->DB 数据库即存放数据的仓库, ...
 - Web框架之Django_02基本操作(Django项目启动配置、数据库连接、orm、增删改查)
		
摘要: Django项目简单现实过程 pycharm连接数据库 Django之orm简单操作增删改查 一.新建Django项目.配置.设置: 新建Django项目:(为了熟悉Django操作,暂时全部 ...
 - ORM基本增删改查
		
将上一节建造好的数据库 引入Navicate copy_path找到数据表路径 再用navicat打开 创建好的db不只一张表,其中第一张是我们创建的可以用的表 ,其他都是django自带功能所需表 ...
 - Django之数据表增删改查
		
Django数据增删改查: 上课代码 from django.shortcuts import render,HttpResponse # Create your views here. from a ...
 
随机推荐
- python multiprocessing多进程应用
			
multiprocessing包是Python中的多进程管理包,可以利用multiprocessing.Process对象来创建进程,Process对象拥有is_alive().join([timeo ...
 - Careless Me
			
我在百度知道上提了一个问题: 如图我在menu.xml里试图加一个search的按钮,但我从网页上复制了图中第二个item里的代码,运行的时候,这个item却总是出现在overflow(下拉菜单)里面 ...
 - WinThruster中文版破解方法(注册表无伤清理工具)
			
每次卸载完软件,都会有注册表残余垃圾,久而久之电脑会越来越慢,winThruster可以检测出系统无用注册表,并删除. 1.解压文件,安装Setup_WinThruster_2015.exe文件. 2 ...
 - Visual Studio 2013 Update 1
			
Visual Studio 2013 Update 1 VS2013.1.iso 共 245 MB http://download.microsoft.com/download/8/2/6/826E2 ...
 - 使用tableview的表头button 实现多 cell 的选择
			
首先声明本篇博文是作者原创,在QQ群里看到一枚猿友求助,问题描述:使用UItableView 实现在表头里点击不同的按钮,去刷新当前的界面(界面是大的 cell),自己就实现了一下. 实验原材料:故事 ...
 - 3-3 浮点型字面量 & 3-4浮点型案例
			
双精度的浮点类型,末尾加d或者D 3-4浮点型案例 如果一个浮点类型的末尾什么也不写 他表示就是一个double类型的.所以这里定义报错了. float f=1234.328; 把一个范围大的数赋值给 ...
 - 使用ant时 出现 java.lang.OutOfMemoryErro r: Java heap space的解决办法
			
在Linux的shell中,使用export设置ANT_OPTS变量,值为1G export ANT_OPTS=-Xmx1g ant 同理在windows的cmd中,使用set设置ANT_OPTS变量 ...
 - 前端之CSS2
			
CSS盒子模型 CSS盒子模型介绍 盒子模型解释 元素在页面中显示成一个方块,类似一个盒子,CSS盒子模型就是使用现实中盒子来做比喻,帮助我们设置元素对应的样式. 盒子模型示意图如下: 把元素叫做盒子 ...
 - E20181030-hm
			
conquer vt. 征服; 克服; 攻克; 打败(敌人); vi. 得胜,胜利; recur vi. 复发; 重现; 再发生; 回想; recurrence n. 复回,重现; 反复,隐现; ...
 - 201621123016 《Java程序设计》第八周学习总结
			
1. 本周学习总结 2. 书面作业 1. ArrayList代码分析 1.1 解释ArrayList的contains源代码 ArrayList在调用contains方法时会调用indexOf方法得到 ...