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. Centos 7 squid 用户认证

    一.安装安装过程十分简便,只需要安装一下squid,一条命令搞定yum install squidrpm -qa | grep squidsquid-3.5.20-2.el7_3.2.x86_64 二 ...

  2. dubbo服务暴露

    想熟悉dubbo源码,首先要知道dubbo extensionLoader,而dubbo的这种扩展机制,是根据java spi衍生而来. 这是基础,但是我放在后面说明. 一:dubbo demo pr ...

  3. 关于在UNIcode环境下得TCHAR转string类型以及string转TCHAR

    using namespace System::Text: String ^TCHARtoStr(TCHAR *temp) //TCHAR转String { array<unsigned cha ...

  4. python之路-----前端之http协议

    一.概述 HTTP(hypertext transport protocol),即超文本传输协议.这个协议详细规定了浏览器和万维网服务器之间互相通信的规则(B/S架构). HTTP就是一个基于TCP的 ...

  5. [BZOJ3167]Sao

    Problem 给你n个任务,n-1个关系,ab代表a在b前或者a在b后 问你有几种拓扑序 Solution f[i][j]表示第i个节点前有j个节点的方案数 设当前节点为x,儿子节点为s,若x依赖于 ...

  6. C# [GDI+] [API] Get Image bytes Length

    MemoryBMP "{b96b3caa-0728-11d3-9d7b-0000f81ef32e}" 2 Bmp "{b96b3cab-0728-11d3-9d7b-00 ...

  7. springboot使用redisTemplate遇到的问题

    概述 最近工作中新构建了一个项目,用的springboot,由于项目中要使用各种各样的缓存,就使用了spring-data-redis,这个东西比我想象中要难使用的多啊,而且我还遇到个问题,就是在用R ...

  8. error #10234-D: unresolved symbols remain error #10010: errors encountered during linking;

    error #10234-D: unresolved symbols remain error #10010: errors encountered during linking;: include ...

  9. Python之元组方法

    def count(self, value): # 计算元素出现的个数 """ T.count(value) -> integer -- return number ...

  10. sql在所有存储过程中查询包含某字符串的执行语句

    直接在查询分析器中执行以下代码就行: 方法一) select name from sysobjects o, syscomments s where o.id = s.id and text like ...