查询操作

2018-10-12  本文已影响0人  想旅游的程序员

[TOC]

查询操作

查询数据的操作一般都是数据操作中比较复杂的一部分,针对不同那个的操作方式进行分类讲解,为了方便进行快速的操作,我们通过Django提供的一个shell测试命令进行处理

进入项目主目录文件夹,运行如下命令进入项目测试命令行
python manager.py shell
此时就进入了sehll环境,我们进行各种操作即可

#引入blog下的models模块
>>> from blog import models
#添加一个新用户
>>> user = models.User(name='test',nickname='test',age=23)
#进行保存
>>> user.save()

这样就增加了一条数据,如果要删除,则调用删除方法

>>> user.delete()
(1,{'blog.Article':0,'blog.User':1})

查询多条数据

all的使用

>>> models.User.objects
<django.db.models.manager.Manager object at 0x000000003C759E8>
>>> users = models.User.objects
>>> all = users.all()
>>> all
#返回所有的用户信息
<QuerySet [<User:User object>,<User:User object>,<User:User object>]>
#查询第一个用户的用户名
>>> all[0].name
'zhengyuchao'
>>>for u in all:
...     print(u.name,u.nickname,u.age)
...
zhengyuchao 郑玉超 23
yaojuan 大娟 23

all方法返回所有数据,相当于查询所有数据。注意返回的是一个QuerySet的查询集合,如果需要取值,则需要通过下标索引查找

filter方法获取符合条件的QuerySet

图片.png

大部分情况来说pk和id是一样的,我们知道pk代表primary key的缩写,也就是任何model中都有的主键,那么id呢,大部分时候也是model的主键,所以在这个时候我们可以认为pk和id是完全一样的。

exclude方法查找条件不符合的,和filter方法正好相反

图片.png

order_by()方法

根据传递的属性名称进行排序,如果属性前加一个-(负号),则表示倒序排列,否则正序排列


图片.png

values()方法

将查询到的数据转换成字典,保存在列表中


图片.png

查询一条数据

get([condition])查询指定条件的数据,返回0条或者多条都会出现异常

get()方法

图片.png

注意:get方法和filter方法的区别,主要由两点区别

  1. get获取的是一个对象、而filter获取的是一个列表
  2. get如果获取不到值(没有条件符合),则报错,而filtr会返回一个空列表

count()方法

count方法,返回符合条件的数量。


图片.png

first方法和last方法

返回符合条件的第一条和最后一条


图片.png

exists()方法

判断符合条件的数据是否存在


图片.png

条件查询

图片.png

多条件查询Q

使用filter进行多次过滤或者在一个filter中通过都好间隔多个提交。


图片.png

如果是或者的关系,Django为我们提供了一个比较好用的Q,完成多条件的查询,使用Q对象,首先需要引入Q对象,有了 Q 对象后,我们就可以多条件的查询了,不管是并且、或者、非的逻辑都可以完成了。这个就是查询对象 Q。

图片.png

查询原值对象F

可能需要将一些原有的数据可额能进行操作,如年龄加一。


图片.png

传统的手段,我们需要先查询出这个对象,之后在该对象的age加一,之后在保存这个对象,完成数据的更新,比较麻烦
Django针对这种情况,为大家设计了一个F对象,这个对象可以很快的查询出原有对象的值

图片.png

返回的 1 表示有一条数据被更新了。F 对象在我们进行 Django 数据查询的时候,能够辅助我们快速取到对象原有的值,方便我们进行各种操作。所以 F 对象是原有值对象。

上一篇 下一篇

猜你喜欢

热点阅读