12月7日学习内容整理:ORM单表操作

补充:url(r"^$")  代表只匹配域名,没有路径部分

 

一、添加:

1、方式一:昨天讲过的实例化对象

2、方式二:

stu_obj=类名(就是表名).objects.create(name='',birth='',class_id='')

返回的是一个记录对象,也就是一个model对象

 

二、删除和更改

首先要进行查询

再删除或更改

1、删除

类名.objects.all().delete()    使用delete这样就删掉了

2、更改

类名.objects.all().update(字段1=字段值1,字段2=字段值2,....)  这样就是修改,也可以**字典这样去传参w

 

 

三、查询:类名就是表名

查询相关的接口::::

1、类名.objects.all()

》》》查询表中所有记录

》》》返回queryset类型,类似一个列表,列表中的元素是一个实例对象,也就是记录对象(model对象),可以用句点符返回字段值

这个列表实际上是Django封装的QuerySet类型:[<  >,<   >,<   >]这样的形式

2、类名.objects.filter(字段名1=字段值1,字段名2=字段值2,...)

》》》过滤查询,根据过滤条件查询,逗号表示且的关系

》》》返回queryset类型,元素就是符合条件的model对象

3、类名.objects.exclude(字段1=字段值,......)

》》》找出不符合条件的记录

》》》返回queryset类型

4、类名.objects.all().first()

5、类名.objects.all().last()

》》》找出查询后的第一条记录或者最后一条记录

》》》直接返回model对象,默认按主键升序排序

6、类名.objects.all().order_by(字段名)

》》》查询后的记录按照指定的字段名排序,默认升序,字段名前面加-就代表降序

》》》返回queryset类型

7、类名.objects.all().values(字段1,字段2,....)

》》》查询记录中指定的字段值

》》》返回queryset类型,但是元素不是对象,而是字典,[{"字段1":"字段值","字段2":"字段值"},{"字段1":"字段值","字段2":"字段值"}]类似这样的形式

8、类名.objects.all().values_list(字段1,字段2,......)

》》》查询记录中指定的字段值

》》》返回queryset类型,但是元素不是对象,而是元组,[(字段值1,字段值2),(字段值1,字段值2),(字段值1,字段值2)]类似这样的形式

9、类名.objects.all().count()

》》》查询记录的个数

》》》返回的是数字

10、类名.objects.all().reverse()

》》》将查询结果方向排序

》》》返回queryset类型

11、类名.objects.all().get(字段名=字段值)

》》》根据条件查询某一个记录,若没有符合条件的或者符合条件的不止一个就会报错,所以要求必须有且仅能查询到一个符合条件的记录

》》》返回model对象

12、类名.objects.values().distinct()

》》》将查询到的记录去重,一般跟vlaues和values_list用,查询的字段要有重复的可能性,去重才有意义

》》》返回queryset类型,注意元素是字典还是元组要看和values还是values_list用

13、类名.objects.all().exists()

》》》只查询一条记录看是否有数据

》》》返回true或false

 

单表查询中的双下划线::::

字段名_ _gt=2     大于2

字段名_ _contains="w"   包含w,w在里面

字段名_ _icontains="w"   包含w,但是对大小写不敏感

字段名_ _lt=3      小与3

字段名_ _in=[11,22,33]   11和22和33的其中一个

字段名_ _range=[1,3]   在1-3的范围内,包含1和3

字段名_ _startswith="d"  以d开头

字段名_ _endswith="d"   以d结尾

字段名_ _istartswith="d"  以d开头,对大小写不敏感

字段名_ _iendswith="d"   以d结尾,对大小写不敏感

 

posted @ 2017-12-07 15:42  九二零  阅读(85)  评论(0编辑  收藏  举报