Django中数据知识点归纳

 

Django对象的增删改查

我们为了对django对象的增删改查进行总结,先在model.py文件中创建类便于举例

定义学生:

class Students(models.Model):sname=models.CharField(max_length=20)sgender=models.BooleanField(default=True)sage=models.IntegerField()sscord=models.CharField(max_length=20)isDelete=models.BooleanField(default=False)# 这里可以添加Meta类进行对元类的重命名和排序操作class Meta:db_table=xxx  # 定义数据表名,推荐使用小写字母ordering=[]   # 对象的默认排序字段 ,获取对象列表时使用,通常是Integer(整数)类型,升序ordering['id'],降序用ordering['-id']

然后在url.py文件中添加一个链接转到views.py文件中:

url(r'^show/',views.show)

接下来在views.py文件中进行具体的增删改查操作
下面是一些例子:
查询:

# 类名.objects.all()   #查询所有对象
Students.objects.all()# 类名.object.get('条件')   #查询单个对象
Students.object.get(sage=18)# 类名.object.filter.(条件查询)  #模糊查询
#查询年龄小于等于18岁的学生信息
Student.objects.filter(age__lte=20).all()
#查询出年龄大于等于18岁的用户信息,但是使用的是exclude函数
Students.objects.exclude(age__gt=18).all()# 查询结果集的数量
Students.objects.all().count()# 判断查询结果集是否有值
Students.objects.all().exists()# 使用切片的形式拿到前几个值
Students.objects.all()[0:3]# 求出年龄大于学分的所有学生信息
# Student.object.filter(sage__gt=F('sscord')).all()# 求出年龄大于20,并且姓名包含e的所有信息
Students.object.filter(sage__gt=20).filter(sname__contains='e').all()

修改:

# 排序  (默认升序,降序的话属性前面加‘-’)
Students.objects.order_by('sage')#修改
得到对应的对象
模型对象.属性=属性值
模型对象.save()
stu=Students.object.get(sage=18)
stu.sage=19
stu.save()

删除:

获得对象名
对象名.delete()
stu = Students.objects.get(pk=1)
stu.delete()

增加:

对象.save
stu=Students()
sname=jeck
sage=18
sscord=60
stu.save()
context = {'stu':stu}
return render(request,'show.html',context=context)或者直接返回
return render(request,'show.html',locals())

最后在show.py文件里展示views.py文件中的内容
show.py:

<ul>{% for i in stu %}<li>{{ i.sname }}</li>{% endfor %}
</ul>

上面只是一些大概的例子,下面进行总结:
--------------------------------------------------------------------------
ORM(Object Relational Mapping)对象关系映射,是一种程序技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换。
可以简单理解为翻译机,用于django与数据库交互
Django默认通过模型的‘objects’对象实现模型数据查询
Django有两种过滤器用于筛选记录:

filter	:返回符合筛选条件的数据集
exclude	:返回不符合筛选条件的数据集
多个filter 和 exclude可以连接在一起查询

返回查询集:

all()		:返回所有数据
filter() :返回符合条件的数据
exclude():过滤掉符合条件的数据
order_by():排序
values():一条数据就是一个字典,返回一个列表

返回单个数据:

get():返回一个满足条件的对象,没有找到会引发模型类.DoesNotExist异常,找到多个会引发模型类.MultiObjectsReturned异常
first():返回查询集中的第一个对象
last():返回查询集的最后一个对象
count():返回当前查询集中的对象个数
exists():判断查询集中是否有数据,如果有返回True,反之返回False

限制查询集和查询集的缓存:

限制查询集可以使用下标的方法进行限制,等同于sql中的limit
studentList=Students.objects.all()[0:5]   #下标不能是负数
查询集的缓存:每个查询集都有一个缓存,来最小化对数据库的访问
在新建的查询集中,缓存首次为空,第一次对查询集求值,会发生数据缓存,django会将查询出来的数据做一个缓存,并返回查询结构,以后查询直接使用查询集的缓存

过滤器filter(),exclude()以及get()的参数:

语法:属性名称_比较运算符=值比较运算符:
exact:判断,大小写敏感,	filter(isDelete=False)
contains:是否包含,大小写敏感,	filter(sname_contains='赵')
startswith,endswith:以values开头或结尾,大小写敏感
在以上四个运算符前加上i(ignore)就不区分大小写了
isnull,isnotnull:是否为空,	filter(sname_isnull=False)
in:是否包含在范围内,filter(pk_in=[1,2,3,4])
gt,gte,lt,lte:大于,大于等于,小于,小于等于,	filter(sage_gt=30)表示时间的:
year,month,day,week_day,hour,minute,second:filter(lasttime__year=2017)
pk:代表主键,filter(pk=1)跨关系查询:
模型类名__属性名__比较运算符,实际上就是处理的数据库中的join
grade = Grade.objects.filter(student__scontend__contains='赵钱孙')
描述中带有'赵钱孙'这三个字的数据属于哪个班级聚合函数:
使用aggregate()函数返回聚合函数的值
Avg:平均值
Count:数量
Max:最大
Min:最小
Sum:求和
Student.objects().aggregate(Max('sage'))

F对象:

可以使用模型的A属性与B属性进行比较
grades = Grade.objects.filter(ggirlnum__gt=F('gboynum') )
F对象支持算数运算
grades = Grade.objects.filter(ggirlnum__gt=F('gboynum') +10 )

Q对象:

过滤器的方法中的关键参数,常用于组合条件
年龄小于25
Student.objects.filter(Q(sage__lt=25))
Q对象语法支持  | (or), & (and), ~(取反)
年龄大于等于的
Student.objects.filter(~Q(sage__lt=25))

-------------------------------------------------------
在Django中,我们有些时候使用Django自带的ORM语句无法达到操作数据库的效果,这时,我们可以自定义一个管理器来进行数据库的操作。从总体上来说,就是重写方法和自定义方法

django的隐性属性和显性属性

显性: 自己写的那些
隐性: objects 是一个Manager类型的一个对象,作用于数据库进行交互

自定义模型管理器作用:

可以向管理器中添加额外的方法
修改管理器返回的原始查询集
提供创建对象的方式

不同的操作在不同的类中,如all() 在Manager类,get()在Query类中
一个例子说明自定义管理器类的作用:

通过Student.objects.all() 查询sgender为True的记录class Student(models.Model):sno = models.AutoField(primary_key=True)sname = models.CharField(max_length=30,null=False)sgender = models.BooleanField(default=False)objects = getAllTrue()  #创建一个自定义类对象def __str__(self):return "Student:%s--%s"%(self.sname,self.sgender)#自定义管理类
class getAllTrue(models.Manager):  #all()来自于Manager类# def all(self):      #重写方法#     return Manager.all(self).filter(sgender = True) #功能操作def get_queryset(self):		# 与all() 方法相同,在源码中,all()执行就是调用get_queryset()方法。return Manager.get_queryset(self).filter(sgender=True)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/456277.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

面 试 细 节 一 点 通

面谈的礼节是社会新人及求职者踏人社会工作前最重要且最需学习的课题&#xff0c;因为这关系到是否能顺利踏入社会且寻找到一份合适满意的工作。 一个社会新人除了应注意的面试礼节外&#xff0c;在开始进行面谈之前及面谈结束之后&#xff0c;还有不少必须注意的礼仪。 面谈时…

宽带与流量的关系

流量&#xff0c;一般指的是每秒钟流经某设备的数据的多少。也就是Byte/Second( 字节每秒)。 比方说1M&#xff0c;这个概念的单位叫bPS(bit Per Second)比特每秒。而事实上经常用另外一个词来代替描述&#xff0c;也就是带宽。 而带宽和流量的换算关系是&#xff1a; 1 By…

PHP函数处理方法总结

call_user_func_array (PHP 4 > 4.0.4, PHP 5, PHP 7) call_user_func_array — 调用回调函数&#xff0c;并把一个数组参数作为回调函数的参数 说明 mixed call_user_func_array ( callable $callback , array $param_arr ) 把第一个参数作为回调函数&#xff08;callback&…

Django删除多对多表关系 :

删除多对多表关系 &#xff1a; # 删除子表与母表关联关系,让小虎不喜欢任何颜色 # 写法1: child_obj Child.objects.get(name"apollo") colors_obj Colors.objects.all() child_obj.favor child_obj.save() # 写法2: child_obj Child.objects.get(name"apo…

git push/pull时总需要输入用户名密码的解决方案

在提交项目代码或者拉代码的时候&#xff0c;git会让你输入用户名密码&#xff0c;解决方案&#xff1a;&#xff08;我们公司用的是gitlab&#xff09;执行git config --global credential.helper store命令然后git push origin your-branch会让你输入用户名和密码&#xff0c…

Django源代码写DetailView与ListView

基于类的通用视图 - 展平索引 通用显示视图 以下两个通用的基于类的视图旨在显示数据。在许多项目中&#xff0c;它们通常是最常用的视图。 一、DetailView django.views.generic.detail.DetailView 在执行此视图时&#xff0c;self.object将包含视图正在操作的对象。 此视图…

开源商务智能软件Pentaho

1 简介Pentaho是世界上最流行的开源商务智能软件,以工作流为核心的&#xff0c;强调面向解决方案而非工具组件的&#xff0c;基于java平台的商业智能(Business Intelligence,BI)套件BI&#xff0c;之所以说是套件是因为它包括一个web server平台和几个工具软件&#xff1a;报表…

chrome用type=file获取图片路径并转base64字符串

1 html页面 <div class"col-sm-2" style"height: 200px;margin-top: 14px;"> <input id"photo" name" " type"file" value"选择图片" ng-model"photoUrl"> <input type"button&qu…

Python - Django - 中间件 process_exception

process_exception(self, request, exception) 函数有两个参数&#xff0c;exception 是视图函数异常产生的 Exception 对象 process_exception 函数的执行顺序是按照 settings.py 中设置的中间件的顺序的倒序执行 process_exception 函数只在视图函数中出现异常的时候才执行…

NTV Media Server G3性能测试

Hello&#xff01;大家好&#xff0c;我是资深测试工程师Jackie&#xff0c;今天我来和大家一起对云视睿博的高性能流媒体服务器NTV Media Server G3做一次性能测试。今天测试有一个小目标&#xff0c;那就是验证在一台普通的PC机上&#xff0c;NTV Media Server G3的并发能力是…

人生不只是上坡路

从前的自己都是非常顺利的&#xff0c;觉得自己有一天一定可以成就一番事业。 可是谁也预料不到这几年的变化&#xff0c; 似乎人生就要跌落到了谷底&#xff0c; 不知道该如何去面对&#xff0c; 压力很大、惶恐不安、不知道未来的路该如何去走。 人生不只是上坡路&#xff0c…

Django 时间与时区设置问题

Django 时间与时区设置问题 在Django的配置文件settings.py中&#xff0c;有两个配置参数是跟时间与时区有关的&#xff0c;分别是TIME_ZONE和USE_TZ 如果USE_TZ设置为True时&#xff0c;Django会使用系统默认设置的时区&#xff0c;即America/Chicago&#xff0c;此时的TIME_…

Oracle+ASM单机环境下,开启归档的最简单的方法

在ASM单机环境下&#xff0c;开启归档的最简单的方法。环境&#xff1a;oracle11g 11.2.0.4 登陆sqlplus[oracleudevasm ~]$ sqlplus / as sysdbaSQL*Plus: Release 11.2.0.4.0 Production on Thu Jun 8 18:20:41 2017Copyright (c) 1982, 2013, Oracle. All rights reserved…

【Python】 配置解析ConfigParser 命令行参数解析optparser

ConfigParser ConfigParser包装了配置文件的读取和写入&#xff0c;使得python程序可以更加轻松操作配置文件了。这里的配置文件是指.ini的那种文件&#xff0c;基本格式如下 [section_a] a_key1 a_value1 a_key2 a_value2[section_b] b_key1 b_value1 b_key2 b_value2 b_k…

解决:build_attrs() takes at most 2 arguments (3 given)

1.这个原因是由于captcha版本安装太低引起的&#xff0c;所以导致register页面打开报错 2.解决办法就是安装更高级版本的captcha 解决pip install django-simple-captcha0.5.5

docker registry v2与harbor的搭建

docker的仓库 1 registry的安装 docker的仓库我们可以使用docker自带的registry,安装起来很简单&#xff0c;但是可能有点使用起来不是很方便。没有图形化。 开始安装 1 使用镜像加速器 2 curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://dc945b6d.m…

在windows下安装Redis

一、下载windows版本的Redis 由于官网上没有windows版的下载地址&#xff0c;所以需要下载windows版本的Redis有以下两个地址&#xff1a; 博主的csdn资源地址&#xff1a;http://download.csdn.net/detail/u010608551/9778240 github下载地址&#xff1a;https://github.com/M…

Django REST framework【学习内容】

快速入门 我们将创建一个简单的允许管理员用户查看和编辑系统中的用户和组的API。 项目设置 创建一个名为 tutorial 的新django项目&#xff0c;然后启动一个名为 quickstart 的新app。 # 创建项目目录 mkdir tutorial cd tutorial# 创建一个virtualenv来隔离我们本地的包依…

DotNetCore跨平台~发布脚本PowerShell的设计

回到目录 这几天对PS情有独忠&#xff0c;被它的强大功能所希引&#xff0c;它可以快速部署&#xff0c;快速发布&#xff0c;将一些连带的动作一次的完成&#xff0c;挺方便&#xff0c;类似于早期的bat文件&#xff0c;也像linux平台的bash脚本&#xff0c;但功能上&#xff…

解决: 'Cannot call `.is_valid()` as no `data=` keyword argument was ' AssertionError: Cannot call `

#注册 def add_person(request):p_name request.POST.get("p_name")p_password request.POST.get("p_password")person_data {"p_name": p_name,"p_password": p_password,}print(person_data)serializer PersonSerializer(person…