User 是自己创建的模型类,等于数据库中的表

常用的查询方法:

  all():获取所有数据: User.objects.all()

  first():获取第一条数据: User.objects.first()

  last():获取最后一条数据: User.objects.last()

  filter():根据参数提供的条件获取过滤后的记录:User.object.filter(id=1)

    User.objects.filter(id=1,age=18) # 多个条件相当于sql语句的and连接

  exclude():排除条件的所有数据: User.objects.exclude(name=‘lalala')

  get():获取一条数据: User.objects.get(id=1)

    注:只能获取一条,多余一条报错

  order_by():对结果排序(顺序): User.objects.order_by('age')

    多项排序: User.objects.order_by('age','id')

    逆向排序: User.objects.order_by('-age') # 逆向排序就是条件前面加上个负号

  values():返回 QuerySet ,字典列表:User.objects.all().values()

    查询表中所有的name 以字典列表返回:User.objects.values('name')

  only():返回QuerySet,对象列表,一定包含主键字段:User.objects.only('name')

  defer():返回QuerySet,对象列表,作用和 only() 相反,查询出除了给定条件的所有字段数据:User.objects.defer('sex')

  count():获取当前查询到的数据的总数:User.objects.all().count()

常用的查询条件:

  切片和python列表切片用法相似,不支持负索引,数据量大时不用步长

    切片后,不在支持附加过滤条件与排序

    User.objects.all()[2:5] # 获取2~5条数据

  exact:相当于等于号

    User.objects.filter(name__exact='lalala') # 查出 name = ’lalala‘ 的数据

  iexact:跟exact一样,只是忽略大小写的匹配

  contains:包含

    User.objects.filter(name__contains='lala') # 包含 lala 的都匹配出来

  icontains:跟contains一样,唯一不同的是忽略大小写

  startswith:以什么开始

    User.objects.filter(name__startswith='la') # 查询 name 字段以 la 开始的数据

  istartswith:同startswith ,只是忽略大小写

  endswith:以什么结尾,同startswith

  iendswith:以什么结尾,忽略大小写,同istartswith

  in:成员所属:

    User.objects.filter(age__in=[18,19,20]) # 查询出age=18,19,20的所有数据

  gt:大于:

    User.objects.filter(age__gt=20) # 查询出age 大于 20的所有数据

  gte:大于等于

    User.objects.filter(age__gte=20) # 查询出age 大于等于 20的所有数据

  lt:小于

    User.objects.filter(age__lt=20) # 查询出age 小于 20的所有数据

  lte:小于等于

    User.objects.filter(age__lte=20) # 查询出age 小于等于 20的所有数据

  range:区间

    User.objects.filter(age__range=(18,30)) # 查询出 age 在18 到 30 的所有数据

  isnull:判断是否为空

    User.objects.filter(name__isnull=True)

  使用 sql 中的 or 条件查询时:

    1、先导包

from django.db.models import Q

    2、使用:

User.objects.filter(Q(age=0) | Q(age=1)) # 查询出 age=0 或 age=1的所有数据

  查找对象的条件的意思是传给以上方法的一些参数;相当于是SQL语句中的where语句后面的条件,语法为字段名__(两个下划线)规则

  聚合函数:

    导包:

from django.db.models import Count,Avg,Max,Min,Sum

    Count:统计

    Avg:平均值

    Max:最大值

    Min:最小值

    Sum:求和

    通过 queryset 的 aggregate 方法使用:

      返回字典格式;age_avg是自定义的键

  分组:

    结合 Values,annotate 和聚合函数一起使用

    annotate

Django 学习第七天——Django模型基础第二节的更多相关文章

  1. 七、Django模型基础第二节——常用查询

    1 常用的模型字段类型 官方文档链接: https://docs.djangoproject.com/en/2.1/ref/models/fields/#field-types 常用的字段类型 模型字 ...

  2. Django学习笔记(2)——模型,后台管理和视图的学习

    一:Web投票示例 本节我们首先从全局范围再复习一下Django的概念,让自己对Django的设计理念, 功能模块,体系架构,基本用法有初步的印象. Django初始的详细博客内容:请点击我 该应用包 ...

  3. Django 学习笔记(四) --- 模型和数据库

    人生苦短 ~ Tips:仅适用于 Python 3+(反正差别不大,py2 改改也能用).因为据 Python 之父 Guido van Rossum 说会在 2020 年停止对 Python 2 的 ...

  4. django学习笔记(三)模型

    1.创建一个django app: python manage.py startapp books 2.validate 命令检查你的模型的语法和逻辑是否正确.一旦你觉得你的模型可能有问题,运行 py ...

  5. Django学习系列之重写User模型和登录验证

    重写User模型 Django内置的User模型可能不适合某些项目,我们可能要基于内置的添加一些字段 创建users app startapp users 修改settings.py配置文件,覆盖默认 ...

  6. django 学习笔记(一)搭建基础环境

    1.安装django 下载地址 https://github.com/django/django 解压后进入文件夹运行指令 >> python setup.py install 2.创建工 ...

  7. Django学习笔记之使用 Django项目开发框架

    Django 项目是一个定制框架,它源自一个在线新闻 Web 站点,于 2005 年以开源的形式被释放出来.Django 框架的核心组件有: 用于创建模型的对象关系映射 为最终用户设计的完美管理界面 ...

  8. [python][django学习篇][3]创建django web的数据库模型

    推荐学习博客:http://pythonzh.cn/post/8/ 博客或者web界面向用户展示内容,它需要从某个地方获取博客内容或者web界面内容,才能够展示出来.通常来说:某个地方指的就是数据库 ...

  9. Django学习系列8:django测试客户端

    """向浏览器返回真正的HTML响应,添加一个新的测试方法""" from django.test import TestCase from ...

随机推荐

  1. 使用pm2离线部署nodejs项目

    1.下载https://npm.taobao.org/mirrors/node/v8.11.1/node-v8.11.1-linux-x64.tar.xz 比如安装到/opt目录 xz -d node ...

  2. 单击列表行前边的checkbox被选中,再单击,取消选中

    需求描述:单击datatabl的一行数据,前边的checkbox被勾选上,再次点击,选中取消,第一次碰到这种需求,不过呢也很实用,简单记录一下 代码: //html代码<tr class=&qu ...

  3. jsp 修饰 Request 及Response

    Servlet API包含4个可修饰的类,用于改变Servlet Request以及Servlet Response.这种修饰允许修改 ServletRequest以及ServletResponse或 ...

  4. PDF怎么去除页眉页脚,PDF页眉页脚编辑方法

    我们在使用文件的时候需要编辑页眉页脚的时候,这个时候我们应该怎么做呢,相信别的文件大家都知道怎么编辑了,PDF文件大家都知道吗,最开始接触这个文件的时候小编觉得很难,之后找到技巧之后也并没有很难,今天 ...

  5. cf1132G 线段树解分区间LIS(一种全新的线段树解LIS思路)+单调栈

    /* 给定n个数的数列,要求枚举长为k的区间,求出每个区间的最长上升子序列长度 首先考虑给定n个数的数列的LIS求法:从左往右枚举第i点作为最大点的贡献, 那么往左找到第一个比a[i]大的数,设这个数 ...

  6. hdu3635

    /* 一开始第a个球在第a个城市 操作T a b,把第a个球所在城市的所有球移到b所在的城市 操作Q a 要求输出 第a个球在哪个城市 第a个球所在的城市有几个球 第a个球移动次数 */ #inclu ...

  7. bzoj 4715

    其实我并没有见过原题,只是因为...这被改编成了互测题... 题目中提到了一个序列,这个序列是很重要的,否则这个问题好像是没有合理的时间复杂度解法的 但正因为有了这个序列,这个问题的时间复杂度才让人能 ...

  8. 异常小结:上一张图搞清楚Java的异常机制

    下面是Java异常类的组织结构,红色区域的异常类表示是程序需要显示捕捉或者抛出的. Throwable Throwable是Java异常的顶级类,所有的异常都继承于这个类. Error,Excepti ...

  9. Java将文件中的内容转换为sql语句(和并发定时读取文件)

    数据文件内容data.txt {USER_TYPE=1,CREATE_USER=ZHANG,UPDATE_USER=li,OPER_NUM=D001,SRC=2,UPDATE_TIME=2018-11 ...

  10. javascript 将毫秒值转换为天-小时-分钟-秒钟

    var start_timeMS = new Date(start_date).getTime(); var end_timeMS = new Date(end_date).getTime(); va ...