django模型系统(二)

一、常用的模型字段类型

官方文档地址:https://docs.djangoproject.com/en/2.1/ref/models/fields/#field-types

1.什么是字段类型?

django模型系统(二)

2.常用字段类型映射关系

django模型系统(二)

二、字段的常用参数
官方文档:https://docs.djangoproject.com/en/2.1/ref/models/fields/#field-options

django模型系统(二)

 

补充:verbose_name:注释

三、常用查询

django模型系统(二)
①.django通过模型类上的管理器来构造QuerySet。

django模型系统(二)
② QuerySet 表示数据库中对象的集合。
等同于select 语句。 惰性的

获取sql语句

django模型系统(二)
案例:

③first() 获取第一条 返回的是对象

django模型系统(二)
④last() 获取最后一条 返回的也是一个对象

django模型系统(二)
思考:排序规则? 默认通过主键。通过_meta 设置
⑤get(**kwargs) 根据给定的条件,获取一个对象,如果有多个对象符合,则会报错

django模型系统(二)

⑥ all() 获取所有记录 返回的是queryset

django模型系统(二)
⑦filter(**kwargs) 根据给定的条件,获取一个过滤后的queryset,可查多个条件。django模型系统(二)

⑧ exclude(**kwargs) 跟filter使用方法一致,作用与其相反,它是排除

django模型系统(二)
⑨多条件的OR连接 用到Q对象,django.db.models.Q

django模型系统(二)

 

10. values(*fields(字段)可接收多个参数) 返回一个queryset,返回一个字典列表,而不是数据对象。

django模型系统(二)
11.only(*fields) 返回querySet ,返回对象列表,注意only一定包含主键字段

django模型系统(二)
12.defer(*fields) 返回一个QuerySet,作用和only相反

django模型系统(二)
13. order_by(*fields) 根据给定的字段来排序 默认是顺序,字段名前加上 ‘-’代表反序

django模型系统(二)
14.切片 和python的列表切片用法相似,不支持负索引,数据量大时不用步长
*** 切片过后,不再支持,附加过滤条件与排序

django模型系统(二)
- 常用查询条件 filter,exclude, get
15. exact

django模型系统(二)

16.iexact(不区分大小写的匹配)

django模型系统(二)
17.contains     icontains(不区分大小写)
django模型系统(二) 18.indjango模型系统(二)

19. range

django模型系统(二)
20.gt(大于)  gte(大于等于)
django模型系统(二)

21. lt(小于)    lte(小于等于)
django模型系统(二)
22. startswith (以什么开头)     istartswith(大小写不敏感)
django模型系统(二)

23. endswith(以什么结束)     iendswith (大小写不敏感)
django模型系统(二)
24. isnull True False 对应 sql语句中的  IS NULL IS NOT NULL

django模型系统(二)
四、聚合

- count

django模型系统(二)


from django.db.models import Count, Avg, Max, Min, Sum
通过queryset的aggregate方法
Student.objects.aggregate(age_avg=Avg('age')) # 计算平均年龄

Student.objects.filter(sex=1).aggregate(age_avg=Avg('age'))也是可以的,Max,Min,Sum跟图中用法一致

django模型系统(二)

- 平均值 Avg
- 分组,聚合
结合 Values,annotate 和聚合方法一起实现
查询男生有几个,女生有几个

django模型系统(二)