1、filter(**kwargs)
多个参数间是AND关系
2、exclude(**kwargs)
多个参数间是AND关系,查找NOT不匹配的记录
3、annotate(*args, **kwargs)
对QuerySets中每条记录增加批注,批注参数列表中每个表达式计算的结果。将每个结果对应批注到每条记录上。args使用缺省别名,kwargs使用关键字作为别名
4、order_by(*fields)
a、QuerySets通常按照Meta中的ordering选项排序,也可以通过使用order_by方法定制单个QuerySets的返回排序。‘-field’为降序,缺省为升序,‘?’为乱序(此种情况性能低) b
b、可以使用关联模型的某个字段“关联模型__field”排序
c、直接使用关联模型,则排序使用关联模型中Meta中的ordering排序,如果没有,则使用默认排序,即关联模型的primary key排序。
d、也可以按照query expressions排序,通过调用query expressions的asc、desc方法
e、 如果使用一对多的反向关系,或者多对多关系的关联对象排序,QuerySets中会多出重复查询记录(原因:order_by中每个field,都会出现在select的column中,但是不返回,因此从返回结果看产生了重复的查询结果),注意!!!!。使用distinc(),可以消除重复记录,但需要小写使用 f、无法定义排序是否大小写敏感,django会依照数据库对字符串排序的方式进行排序。通过调用Lower可以达到大小写一致的排序目的:Entry.objects.order_by(Lower(‘headline’).desc())
g、如果不希望进行任何排序包括缺省排序,无参调用order_by()
h、每次order_by()都会清空前一次order_by()的排序
i、会造成性能损耗
j、如果查询未定义排序,则以未知排序返回QuerySets
k、唯一确定一记录的项集合排序,则总是返回顺序的结果
5、reverse()
a、逆序查询结果,再次调用则恢复原始排序。
b、如果查询无排序(order_by调用或者缺省排序)ÿ