其他分享
首页 > 其他分享> > django2.2-模型层详解

django2.2-模型层详解

作者:互联网

系列文章目录

文章目录

一、ORM常用字段及参数

1. 字段类型

更多字段类型参考官方文档:传送门

2. 字段通用参数

3. choices参数的基本用法

choices参数,用来指定一个序列。这个序列实现写好了一些选项和说明,目的是让用户选择我们写好的选项,以便规范用户输入和优化性能。

更多字段参数参考官方文档:传送门

二、单表操作

1. 增删改查

2. 双下划线查询(Field查询):

双下划线查询在官方文档中被称为Field查找,是指定 SQL WHERE 子句的方法。它们被指定为 filter()exclude()get() 方法的关键字参数。

比如:查询年龄大于35岁的记录,可以在字段名age后面跟一个__gt=值

filter(age__gt=35)

其他常用的有:

3. 主键 (pk) 查询快捷方式

出于方便的目的,Django 提供了一种 pk 查询快捷方式,使用 pk 就可以表示主键 “primary key”。

假设在 Blog 模型中,主键是 id 字段,则下面这 3 个语句是等效的:

Blog.objects.get(id__exact=14)
Blog.objects.get(id=14)
Blog.objects.get(pk=14)

pk 的使用并不仅限于 __exact 查询,任何的查询项都能接在 pk 后面,执行对模型主键的查询:

# 查找主键值为1、4、7的
Blog.objects.filter(pk__in=[1,4,7])

# 查找主键值大于14的
Blog.objects.filter(pk__gt=14)

三、外键字段的增、删、改

1. 一对多和一对一模型

注意:外键定义在多的一方!

模型类.objects.create(数据库中的外键字段名称=被参照表的主键字段,……)
```

第二种:写一个关联对象,此时,就可以用在模型类中定义的名称了。

```python
模型类.objects.create(外键字段名称=关联对象,……)
```

2. 多对多模型

多对多模型外键的修改,其实就是在修改连接表。要访问连接表,就要通过定义了外键的模型对象来访问:对象.外键,在此基础上进行修改

四、多表查询

1. 子查询(基于对象的跨表查询)

2. 联表查询(基于双下划线的跨表查询)

五、聚合查询

# 导入需要的聚合函数
from django.db.models import Max, Min, Sum, Count, Avg

模型类.objects.aggregate(别名1=聚合函数1('字段'), 别名2=聚合函数2('字段'),……)

以上是聚合函数单独使用时的语法,需要在aggregate()方法中使用。而实际上,聚合查询通常都是配合下面的分组查询进行使用。

六、分组查询

在MySQL中,分组之后默认只能获取到分组的依据字段,其他字段都不能直接获取。所以,在必要的情况下,需要修改MySQL的严格模式。

# 统计每一本书的作者
Book.objects.annotate(zuozheshu=Count('author')).values('title','zuozheshu')


# 统计每个出版社最便宜的书的价格
publisher.objects.annotate(zuipianyi=('book__price')).values('publisher_name','zuipianyi')

七、F查询与Q查询

八、多对多模型的三种建表方式

我们已经学过一种多对多模型的建表方法,但是它有很多限制。因此,我们需要其他方法来进行弥补。

九、数据库查询优化

标签:__,django2.2,objects,对象,模型,外键,查询,详解
来源: https://blog.csdn.net/qq_39330486/article/details/120604691