PostgreSQL 特有模型字段

QuerySet API 


返回新 QuerySet 的方法

filter(**kwargs)

返回一个新的 QuerySet,其中包含与给定查找参数相匹配的对象。多个参数通过底层 SQL 语句中的 AND 连接。

exclude(**kwargs)

返回一个新的 QuerySet,其中包含与给定查找参数不匹配的对象。多个参数通过底层 SQL 语句中的 AND 连接,整个过程用 NOT() 括起来。

排序

order_by(*fields)

默认情况下,QuerySet 返回的结果是按照模型 Meta 中的 ordering 选项给出的排序元组排序的。你可以通过使用 order_by 方法在每个 QuerySet 的基础上覆盖这一点。

举例:Entry.objects.filter(pub_date__year=2005).order_by('-pub_date','headline')

上述结果将按 pub_date 降序排列,然后按 headline 升序排列。"-pub_date" 前面的负号表示降序升序隐含的。

可以通过在表达式上调用 asc() 或 esc(),按 查询表达式 排序:

Entry.objects.order_by(Coalesce('summary','headline').desc())

asc() 和 esc() 有参数(nulls_first 和 nulls_last)来控制如何对空值进行排序。

反向查询

reverse()

使用 reverse() 方法来反向返回查询集元素的顺序。第二次调用 reverse() 会将顺序恢复到正常方向。

要检索一个查询集中的“最后”五个项目,你可以这样做:

my_queryset.reverse()[:5]

去重

distinct(*fields)

返回一个新的 QuerySet,在其 SQL 查询中使用 SELECT DISTINCT。这将消除查询结果中的重复记录。

比较函数

范围字段支持标准查询:ltgtlte 和 gte。这些并没有特别大的帮助——它们先比较下界,然后在必要时才比较上界。这也是用于按范围字段排序的策略。最好是使用特定的范围比较运算符。

gt : 大于  (举例:Entry.objects.filter(id__gt=4)                         SQL 等价于:SELECT...WHEREid>4;)

gte : 大于等于

lt : 小于

lte : 小于等于

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容