Django:模型_QuerySet对象_补充

QuerySet对象方法

 

create()

1、作用:创建一条数据,并且保存到数据库中

2、这个方法相当于先用指定的模型创建一个对象,然后在调用这个对象的save方法

例1:使用save()
⑴编辑视图
Django:模型_QuerySet对象_补充

⑵查看数据
Django:模型_QuerySet对象_补充
Django:模型_QuerySet对象_补充
Django:模型_QuerySet对象_补充


例1_1:使用save()
⑴编辑视图
Django:模型_QuerySet对象_补充

 

例子1_2:使用create()方法
⑴编辑视图
Django:模型_QuerySet对象_补充

⑵编辑视图
Django:模型_QuerySet对象_补充

⑶查看数据
Django:模型_QuerySet对象_补充
Django:模型_QuerySet对象_补充
Django:模型_QuerySet对象_补充

注:从上面的例子可以看出
使用create()方法就是:将需要存储的每个字段值作为关键字参数传递给create()方法,且不再需要使用save()方法来进行保存了

 

 

update()

1、作用:执行更新操作

2、在SQL底层走的也是update命令

例2:
⑴编辑视图
Django:模型_QuerySet对象_补充

 

 

delete()

作用:删除所有满足条件的数据。删除数据的时候,要注意on_delete指定的处理方式(特别是在删除主表中的数据时)

例3:
⑴查看数据
Django:模型_QuerySet对象_补充

 

 

get_or_create()

1、作用:根据某个条件进行查询,如果找到了对应数据,就返回这条数据;如果没有找到,那么就创建一个

2、这个方法的返回值是一个元组,元组的第一个参数obj是这个对象,第二个参数create代表是否是创建的

3、因为返回值是一个元组,因此可以使用索引([ ])的方法将里面具体的值取出来

例子4:
⑴编辑视图
Django:模型_QuerySet对象_补充

⑵编辑视图
Django:模型_QuerySet对象_补充

 

 

bulk_create()

1、作用:一次性插入多条数据,该方法参数以列表的形式传入

2、这个方法和crate()方法类似,只是说crate()方法一次只能插入一条数据(同一个表),但是bulk_create()方法可以一次性插入多条数据

例子5:
⑴编辑视图
Django:模型_QuerySet对象_补充

 

 

count()

1、作用:获取提取的数据的个数

2、如果想要知道查询出来的数据总共有多少条,那么建议使用count()方法,而不是使用Python中的len()函数来计算。因为count()在底层使用的是select count(*)来实现的,这种方式比使用len()方法更加高效

3、Python中的len()方法:用于返回字符串、列表、元组等的长度,即返回里面有多少个元素

4、注意:这里的count()方法时返回查询结果中有多少条数据,而聚合函数中的Count()方法是返回表中有多少条数据

例6:
⑴查看数据
Django:模型_QuerySet对象_补充

⑵编辑视图
Django:模型_QuerySet对象_补充

⑶编辑使用:使用len()

Django:模型_QuerySet对象_补充

注:
QuerySet对象是一种类似于集合的数据:将所有查询出来的数据(模型类),包装到一个类集合里面,因此可以使用for循环和len()函数等

 

 

first()和last()

1、作用:返回查询结果中的第一条数据和最后一条数据

2、如果查询结果是一个空的QuerySet对象的话,那么这两个方法就会返回一个None

例7:
⑴编辑视图
Django:模型_QuerySet对象_补充

 

 

exists()

1、作用:判断某个条件的数据是否存在。比如用户名是不能重复的,因此用户在注册的时候就需要去判断这个用户名是否已经被注册了(数据库中是否已经有相同的数据了)

2、如果要判断某个条件的数据是否存在,那么建议使用exists,这比使用count或者直接判断QuerySet更有效

例8:
⑴编辑视图
Django:模型_QuerySet对象_补充

 

 

distinct()

1、作用:去掉那些重复的数据

2、这个方法如果底层数据库使用的是MYSQL,那么不能传递任何参数

例9:
⑴查看数据
Django:模型_QuerySet对象_补充

⑵编辑视图
Django:模型_QuerySet对象_补充

 

 

切片操作

1、作用:获取数据中的一部分数据

2、有时候我们在查找数据,有可能只需要其中的一部分,那么这时候就可以使用切片操作来实现

3、QuerySet对象使用切片操作就跟列表使用切片操作是一样的

例10:
⑴查看数据
Django:模型_QuerySet对象_补充

⑵编辑视图
Django:模型_QuerySet对象_补充