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");获取某个人的姓名和年龄字段。
本文参考知了课堂授课内容。