Django的QuerySet常用方法

1、filter:将满足条件的数据提取出来,返回一个新的QuerySet,

books = Book.objects.filter(id__gte=2);返回Book表中id大于等于2的数据项,QuerySet类型。在此返回结果上,还可以继续过滤

books = books.filter(~Q(id=3));将id=3的过滤掉。

2、exclude:排除满足条件的数据,返回一个新的QuerySet。

books = Book.objects.filter(id__gte=2).exclude(id = 3):返回Book表中id大于等于2且不等于3的书籍。

3、annotate:给QuerySet中的每个对象都添加一个使用查询表达式(聚合函数,F表达式,Q表达式,Func表达式等)的新字段。

books = Book.objects.annotate(author_name=F("author__name"));在查询到的books中添加author_name字段。

4、order_by:指定将查询的结果根据某个字段进行排序,如果要倒叙排序,那么可以在这个字段的前面加一个负号。

articles = Article.objects.order_by("create_time");根据创建的时间正序排序

articles = Article.objects.order_by("-create_time");根据创建的时间倒序排序

需要注意的一点是,多个order_by,会把之前的排序规则打乱,使用的是最后的排序方式。

articles = Article.objects.order_by("create_time").order_by("author_name");会根据作者的名字进行排序,而不是文章的创建时间

articles = Article.objects.order_by("create_time","author_name"),先按create_time排序,相同按照author_name排序。

5、values:用来指定提取数据时,提取那些字段。默认情况下会把表中所有的字段全部都提取出来,可以使用values来指定,使用了values方法后,提取出的QuerySet中的数据类型不是模型,而是在Values方法中指定的字段和值形成的字典:

person = Person.objects.values("name","age");获取某个人的姓名和年龄字段。

本文参考知了课堂授课内容。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值