django模型系统二

Posted mmll0911

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了django模型系统二相关的知识,希望对你有一定的参考价值。

 

 

 

常用查询及表关系的实现

1.常用查询

进入shell环境

技术图片

 

每一个django模型类,都有一个默认的管理类‘objects‘

QuerySet表示数据库中对象的列表。他可以0到多个过滤器(filter),过滤器通过给定的参数,缩小查询范围。

QuerySet等同于select语句,过滤器是一个限制子句,比如where,比如limt

--all()获取所有:返回的是queryset

技术图片

--获取第一条:返回的是一个对象

 技术图片

--获取最后一条:返回的是一个对象

技术图片

--get(**kwargs)根据给定的条件获取一个对象,如果符合多个,或没有就会报错。

--filter(**kwargs)过滤,根据参数提供的条件,获取一个过滤器后的QuerySet,多个条件等同于select子句,使用and连接。关键字参数的形参必需是模型中的字段名。

技术图片

技术图片

技术图片

技术图片

--exclude(**kwargs)用法

用法和filter一样,作用相反,他是除了,排除。

技术图片

--order_by(*fields),根据给定的字段排序

技术图片

技术图片

正序和倒序:默认asc,-age代表反向,倒序

技术图片

--切片:使用列表的切片语法操作query,除了不能用负索引,其他的都可以,它等价于LIMIT与OFFSET子句。

技术图片

技术图片

 技术图片

--values(*fields)返回queryset,这个queryset返回的是一个字典列表。参数fields指定了select中我们想要限制查询的字段。返回字典列表中,只会包含我们指定的字段。

如果不指定,默认包含所有字段。

技术图片

字典写接口时,较方便

技术图片

--only(*fields)返回一个queryset,和values一样,区别在于这个queryset是对象列表,only一定包含主键

 技术图片

defer(*fields)用法与only相反,除了,不包含。

技术图片

多条件OR连接,需要实现OR条件,我们要使用Q对象。

 技术图片

 多条件AND连接,需要实现AND条件,我们要使用Q对象。

技术图片

2.查询条件

exact:精确匹配

技术图片

iexact:忽略大小写

contains:相当于% %

技术图片

icontains

in:

技术图片

gt:grate than  大于

gte:grate than equ   大于等于

技术图片

lt:less than   小于

技术图片

lte:less than equ  小于等于

start

startswith:以某某开始

技术图片

endwith

iendwith

range:相当于SQL中的between......and

技术图片

isnull

技术图片

技术图片

  语法都是field__condition是两个下划线

 

count()返回queryset的长度

3.聚合函数

 --count统计数量

技术图片

 Avg平均值:

技术图片

Max最大值:

技术图片

Min最小值:

Sum求和:

分组,聚合,分组需要结合values,annotate和聚合方法看下面的案例

查询男生女生多少人

技术图片

 

常用模型字段类型:

 技术图片

技术图片

技术图片

表关系实现

django中,模型通过特殊的字段进行关系连接

一对一

一对多

多对多

 

以上是关于django模型系统二的主要内容,如果未能解决你的问题,请参考以下文章

Django模型系统

django模型系统

django目录

Django基础五之django模型层单表操作

Django框架

Django框架