Django查询及双下划线方法和一对多外键关系的ORM操作

这篇博客介绍了Django ORM中的查询技巧,包括models对象的常用方法如all(), filter(), get(), values()等,并详细讲解了双下划线操作符的使用,如__lt, __gt, __in等,以及如何处理一对多关系的查询、增加、删除和修改。" 116122299,7951235,RAID磁盘阵列详解与应用,"['云计算', '服务器管理', 'RAID技术', '数据安全', '硬件维护']
摘要由CSDN通过智能技术生成

一、models对象常用的方法

1、all()  

2、filter(**kwargs)    

3、get(**kwargs) 

4、exclude(**kwargs)  

5、values(*field) 

6、values_list(*field)  

7、order_by(*field)  

8、reverse() 

9、count()  

10、first()   

11、last()  

12、exists()   

二、双下划线使用

1、xx__lt    小于

2、xx__gt    大于

3、xx__lte    小于等于

4、xx__gte    大于等于

5、xx__in    包含某些值

6、exclude(age__in=[11,32])  不包含

7、 xx__contains()   (包含某个字符的记录)和xx__icontains()   (忽略大小写的包含)

8、xx__range     查找范围

9、xx__startwith  (获取以xx开头的记录) xx__istartwith(获取以xx开头的记录,忽略大小写)

10、xx__endwith( 获取以xx结尾的记录) xx__iendwith(获取以xx结尾的记录,忽略大小写)

11、 xx__date  可以根据年月日进行过滤

三、一对多关系

(一)查询

1、正向查询  查询对应学科

2、反向查询  查询学Python的学员

(二)增加

1、正向增加

2、反向增加

(三)删除

(四)修改

1、正向修改

2、反向修改


一、models对象常用的方法

1、all()  

查询所有结果  QuerySet对象,输出结果的数据类型是一个列表类型,列表中的元素对应每一行的元素

2、filter(**kwargs)    

包含所有筛选条件符合的对象 输出结果的数据类型是一个列表类型,列表中的元素对应每一行的元素

3、get(**kwargs) 

返回与所给筛选条件相匹配的对象,返回结果有且只有一个,如果符合筛选条件的对象超过一个或者没有都会抛出错误。

4、exclude(**kwargs)  

它包含了与所给筛选条件不匹配的对象  返回的是一个QuerySet对象,是一个列表,列表内部是对应的每行元素的对象

5、values(*field) 

返回一个ValueQuerySet——一个特殊的QuerySet,运行后得到的并不是一系列model的实例化对象,而是一个可迭代的字典序列  返回的是一个QuerySet对象,是一个列表,列表中嵌套的的是行元素组成的字典

6、values_list(*field)  

它与values()非常相似,它返回的是一个元组序列,返回的是一个QuerySet对象,是一个列表,列表中嵌套的的是行元素中的值,每个值组成的元组形式

7、order_by(*field)  

对查询结果排序 返回的是一个QuerySet对象,是一个列表,列表中嵌套的是排序后的结果对象

8、reverse() 

对查询结果反向排序,请注意reverse()通常只能在具有已定义顺序的QuerySet上调用(在model类的Meta中指定ordering或调用order_by()方法)。返回的是一个QuerySet对象,是一个列表,列表中嵌套的是排序后的结果对象

9、count()  

返回数据库中匹配查询(QuerySet)的对象数量,是一个int类型

10、first()   

返回第一条记录,返回结果是一个对象

11、last()  

返回最后一条记录,返回结果是一个对象

当输出结果为空时,first和last方法可以返回空,但若对其进行索引调用则会出现报错情况

12、exists()   

如果QuerySet包含数据,就返回True,否则返回False 输出为boolean类型,不需要使用参数

二、双下划线使用

1、xx__lt    小于

xx__lt    小于

2、xx__gt    大于

xx__gt    大于

3、xx__lte    小于等于

xx__lte    小于等于

4、xx__gte    大于等于

xx__gte    大于等于

5、xx__in    包含某些值

ret = person_model.filter(age__in=[12,22])

6、exclude(age__in=[11,32])  不包含

exclude(age__in=[11,32])  不包含

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值