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. 基于RabbitMQ rpc实现的主机管理

    要求: 文件分布: 流程图: import pika import os import socket class Server(object): def __init__(self, queuenam ...

  2. [LeetCode] 80. Remove Duplicates from Sorted Array II ☆☆☆(从有序数组中删除重复项之二)

    https://leetcode.com/problems/remove-duplicates-from-sorted-array-ii/discuss/27976/3-6-easy-lines-C% ...

  3. SQLite数据库 简介、特点、优势、局限性及使用

    SQLite简介 SQLite是一个进程内的轻量级嵌入式数据库,它的数据库就是一个文件,实现了自给自足.无服务器.零配置的.事务性的SQL数据库引擎.它是一个零配置的数据库,这就体现出来SQLite与 ...

  4. elasticsearch多字段搜索

    https://blog.csdn.net/Ricky110/article/details/78888711 多字段搜索多字符串查询boost 参数 “最佳” 值,较为简单的方式就是不断试错,比较合 ...

  5. 使用vagrant构建你们团队的开发环境

    vagrant可以让团队快速搭建统一的开发环境. 搭建vagrant你需要准备三个东西: 1.vagrant安装包 . 2.virtualbox安装包. 3.打包后的vagrant虚拟环境镜像 (ln ...

  6. tensorflow tfrecord文件存储

    import tensorflow as tf import numpy as np import skimage from skimage import data, io, color from P ...

  7. Triangle Count

    Given an array of integers, how many three numbers can be found in the array, so that we can build a ...

  8. C语言:函数嵌套2^2!+3^2!

    #include <stdio.h> long f1(int p); long f2(int q); int main (){ int i = 0; long s = 0; for(i = ...

  9. 凯撒密码移位python

    #!/usr/bin/python'''凯撒密码'''a="gmbhqwertghjkcvbzn"s=[""]*len(a)for j in range(26) ...

  10. MarkdownPan2 简单使用指南

    markdown 简单使用指南 一级标题 二级标题 三级标题加代码 四级标题 这里是加粗 这里是正文and English 888 这里有正文嵌入代码这种样式 这里是代码块 这种使用的代码块 还有引用 ...