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. 队列添加对象后,所有都变成相同的(bug)

    代码背景: 定义全局变量 private object currentObj=new object(); ;i<objectList.count;i++) { currentObj=object ...

  2. 搭建SDN网络——mininet

    好久没来写不博客,感觉自己不写写博客,就完全想不起当天干了什么.前几天参加了小米的面试,整个人被打击的不行,还是要好好学习,不然工作都找不到. 这学期选了SDN的课,只有六周,学完有点懵,这这这等于什 ...

  3. WPF实现分页控件

    页面代码如下: <UserControl x:Class="Music163.DataGridPaging" xmlns="http://schemas.micro ...

  4. with的上下文管理

    1.with with语句是在Python2.6中出现的新语句.在Python2.6以前要正确的处理涉及到异常的资源管理时,需要使用try/finally代码结构.如要实现文件在操作出现异常时也能正确 ...

  5. C# [WIN32] [API] Global Hook

    NativeMethods.cs: using System; using System.Runtime.InteropServices; namespace GlobalHook { interna ...

  6. jenkins 关闭和重启的实现

    jerkins自带的重启手段重启过程缓慢,在jenkins的操作过程中可使用以下操作: 关闭Jenkins 只需要在访问jenkins服务器的网址url地址后加上exit.例如我jenkins的地址h ...

  7. 动态规划Dynamic Programming

    动态规划Dynamic Programming code教你做人:DP其实不算是一种算法,而是一种思想/思路,分阶段决策的思路 理解动态规划: 递归与动态规划的联系与区别 -> 记忆化搜索 -& ...

  8. python基础之作业2----购物车小练习

    product_list = [    ("Iphone",6000),    ("Mac pro",12800),    ("Bike", ...

  9. Java_jsp.jstl.Function函数标签库.记录

    JSTL Functions标签库 本书第12章的12.3节(定义和使用EL函数)介绍了EL函数的创建和使用方法.在JSTL Functions标签库中提供了一组常用的EL函数,主要用于处理字符串,在 ...

  10. mybatis支持jdk8等localdate类型

    大家知道,在实体Entity里面,可以使用java.sql.Date.java.sql.Timestamp.java.util.Date来映射到数据库的date.timestamp.datetime等 ...