1 常用的模型字段类型

官方文档链接:

https://docs.djangoproject.com/en/2.1/ref/models/fields/#field-types

  • 常用的字段类型
模型字段 类型 映射到数据库中类型 备注
IntegerField 整型 int -
CharField 字符类型 varchar 通过max_length指定最大长度
TextField 文本类型 text -
BooleanField 布尔类型 tinyint 使用时传递True/False
DateField 日期类型 date 没有时间
DateTimeField 日期时间类型 datetime 使用时,传递datetime.datetime()

注:DateField使用时,可以设置DateField.auto_now,每次保存对象时,自动设置该字段为当前时间。设置DateField.auto_now_add,当对象第一次被创建时自动设置当前时间。

2 字段的常用参数

官方文档链接:

https://docs.djangoproject.com/en/2.1/ref/models/fields/#field-options

  • Field常用参数
参数 作用
primary_key 指定是否为主键
unique 指定是否唯一
null 指定是否为空,默认为False
blank 等于True时form表单验证时可以为空,默认为False
default 设置默认值
DateField.auto_now 每次修改都会将当前时间更新进去,只有调用,QuerySet.update方法将不会调用。这个参数只是Date和DateTime以及TimModel.save()方法才有的
DateField.auto_now_add 第一次添加进去,都会将当前时间设置进去。以后修改,不会修改这个值

3 常用查询

通过模型类上的管理器来构造QuerySet。

  • 模型类上的管理器是啥? 模型类.objects

  • QuerySet 表示数据库中对象的集合。 等同于select 语句。 惰性的

方法 作用
first() 获取第一条 返回的是对象
last() 获取最后一条 返回的也是一个对象
get(**kwargs) 根据给定的条件,获取一个对象,如果有多个对象符合则报错
all() 获取所有记录 返回的是queryset
filter(**kwargs) 根据给定的条件,获取一个过滤后的queryset,多个条件使用and连接
exclude(**kwargs) 跟filter使用方法一致,作用相反,它是排除
Q 多条件的OR连接 用到Q对象,django.db.models.Q
values(*fields) 返回一个queryset,返回一个字典列表,而不是数据对象
only(*fiels) 返回querySet ,对象列表,注意only一定包含主键字段
defer(*fields) 返回一个QuerySet,作用和only相反
order_by(*fields) 根据给定的字段来排序 默认是顺序,字段名前加上 ‘-’代表反序
切片 和python的列表切片用法相似,不支持负索引,数据量大时不用步长
  • 常用查询条件 filter,exclude, get
方法 作用
exact 等于
iexact 等于(不区分大小写)
contains 包含
icontains 包含(不区分大小写)
in 间隔范围查询
range 连续范围查询
gt、gte 大于、大于等于
lt、lte 小于、小于等于
startswith 起始
istartswith 起始(不区分大小写)
endswith 结束
iendswith 结束(不区分大小写)
isnull 为空,True False 对应 IS NULL IS NOT NULL
  • 聚合

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

通过queryset的aggregate方法

 Student.objects.aggregate(age_avg=Avg('age'))  # 计算平均年龄
    • count

    • 平均值 Avg

  • 分组,聚合 结合 Values,annotate 和聚合方法一起实现

七、Django模型基础第二节——常用查询的更多相关文章

  1. Django 07 Django模型基础2 (常用查询和多表关联)

    Django 07 Django模型基础2 (常用查询和多表关联) 一.常用查询 #查找数据 def search_user(request): #获取 rs = User.objects.first ...

  2. Django 学习第七天——Django模型基础第二节

    User 是自己创建的模型类,等于数据库中的表 常用的查询方法: all():获取所有数据: User.objects.all() first():获取第一条数据: User.objects.firs ...

  3. Django 学习第六天——Django模型基础第一节

    一.Django 的 ORM 简介: Django的ORM系统的分析: 1.ORM 概念:对象关系映射(Object Relational Mapping,简称ORM) 2.ORM的优势:不用直接编写 ...

  4. 六、Django模型基础第一节

    1 数据库的连接配置 django 连接mysql的配置流程: 安装 pymysql pip install pymysql 创建数据库用户 '; grant all on *.* to 'xiang ...

  5. Django 08 Django模型基础3(关系表的数据操作、表关联对象的访问、多表查询、聚合、分组、F、Q查询)

    Django 08 Django模型基础3(关系表的数据操作.表关联对象的访问.多表查询.聚合.分组.F.Q查询) 一.关系表的数据操作 #为了能方便学习,我们进入项目的idle中去执行我们的操作,通 ...

  6. Django 06 Django模型基础1(ORM简介、数据库连接配置、模型的创建与映射、数据的增删改查)

    Django 06 Django模型基础1(ORM简介.数据库连接配置.模型的创建与映射.数据的增删改查) 一.ORM系统 #django模型映射关系 #模型类-----数据表 #类属性-----表字 ...

  7. Django入门--模型系统(二):常用查询及表关系的实现

    1.常用查询 模型类上的管理器: ** 模型类.objects ** (1)常用一般查询 rs = Student.objects.all() # 查询所有记录,返回Queryset print(rs ...

  8. OSI七层模型基础知识及各层常见应用

       OSI Open Source Initiative(简称OSI,有译作开放源代码促进会.开放原始码组织)是一个旨在推动开源软件发展的非盈利组织.OSI参考模型(OSI/RM)的全称是开放系统互 ...

  9. Django模型层:多表查询

    一 创建模型 实例:我们来假定下面这些概念,字段和关系 作者模型:一个作者有姓名和年龄. 作者详细模型:把作者的详情放到详情表,包含生日,手机号,家庭住址等信息.作者详情模型和作者模型之间是一对一的关 ...

随机推荐

  1. 移动端input输入placeholder垂直不居中

    在移动端编写input输入框时候,为了输入文字与输入框垂直居中,一般情况下,会将input的line-height的高度等于height.但在移动端输入的时候会发现,虽然输入内容确实是垂直居中了,但是 ...

  2. 一、Git简介

    由于工作需要,代码版本控制工具由SVN换为了Git.Git对于我来说,很陌生,不清楚其工作原理,所以查询了一些资料,将自己所得知的内容来汇总一下,梳理一下这方面的知识,同时也给其他想了解Git的童鞋们 ...

  3. Vue.js安装使用教程

    一.说明 上大学前,请的都是前端JavaScript.后端ASP/PHP/JSP.前后端代码混杂:上大学时,请的都是前端Jquery.后端SSH.前后端代码分离通过模板关联:大学出来后,请的都是前端三 ...

  4. 八大排序算法——希尔(shell)排序(动图演示 思路分析 实例代码java 复杂度分析)

    一.动图演示 二.思路分析 希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序:随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰被分成一组,算法便终止. 简单插 ...

  5. python数据结构与算法之问题求解

    懂得计算机的童鞋应该都知道,一条计算机程序由数据结构跟算法两大部分组成.所以,其实不管你使用哪种计算机语言编写程序,最终这两部分才是一个程序设计的核心.所以,一个不懂得数据结构与算法的程序员不是一个好 ...

  6. Docker私有仓库实例

    C:\Users\think\.m2\settings.xml文件配置: <?xml version="1.0" encoding="UTF-8"?> ...

  7. 用switch组件控制一个元素的显示和隐藏状态

    微信小程序开发(交流QQ群:604788754) WXML: <view class="body-view"> <switch bindchange=" ...

  8. Oracle查询语句导致CPU使用率过高问题处理

    解决此问题的关键在于如何找到造成CPU使用率过高的SQL语句.步骤如下: 1.使用Process Explorer工具查看到Oracle进程,双击Oracle进程,在弹出的属性窗口的Threads选项 ...

  9. redis学习——数据持久化

    一.概述 Redis的强大性能很大程度上都是因为所有数据都是存储在内存中的,然而当Redis重启后,所有存储在内存中的数据将会丢失,在很多情况下是无法容忍这样的事情的.所以,我们需要将内存中的数据持久 ...

  10. Python_Mix*random模块,time模块,sys模块,os模块

    random模块 作用: 生成随机数(整数,小数,从列表中随机抽值,打乱列表顺序) 常用函数: random.random( )生成随机小数 random.uniform( )取一个范围之间的小数 r ...