Django模型层之字段查询参数及聚合函数
admin
2023-07-09 16:04:52
0

字段查询是指如何指定SQL WHERE子句的内容。它们用作QuerySet的filter(), exclude()和get()方法的关键字参数。

默认查找类型为exact。

下表列出了所有的字段查询参数:


Django模型层之字段查询参数及聚合函数


1. exact

精确匹配。 默认的查找类型!


Django模型层之字段查询参数及聚合函数


2. iexact

不区分大小写的精确匹配。


Django模型层之字段查询参数及聚合函数


第一个查询将匹配 'Beatles Blog', 'beatles blog', 'BeAtLes BLoG'等等。

3. contains

大小写敏感的包含关系匹配。

Entry.objects.get(headline__contains='Lennon')

这将匹配标题'Lennon honored today',但不匹配'lennon honored today'。

4. icontains

不区分大小写的包含关系匹配。

Entry.objects.get(headline__icontains='Lennon')

5. in

在给定的列表里查找。

Entry.objects.filter(id__in=[1,3,4])

还可以使用动态查询集,而不是提供文字值列表:


Django模型层之字段查询参数及聚合函数


或者从values()或values_list()中获取的QuerySet作为比对的对象:


Django模型层之字段查询参数及聚合函数


下面的例子将产生一个异常,因为试图提取两个字段的值,但是查询语句只需要一个字段的值:


Django模型层之字段查询参数及聚合函数


6. gt

大于

Entry.objects.filter(id__gt=4)

7. gte

大于或等于

8. lt

小于

9. lte

小于或等于

10. startswith

区分大小写,从开始位置匹配。

Entry.objects.filter(headline__startswith='Lennon')

11. istartswith

不区分大小写,从开始位置匹配。

Entry.objects.filter(headline__istartswith='Lennon')

12. endswith

区分大小写,从结束未知开始匹配。

Entry.objects.filter(headline__endswith='Lennon')

13. iendswith

不区分大小写,从结束未知开始匹配。

Entry.objects.filter(headline__iendswith='Lennon')

14. range

范围测试(包含于之中)。


Django模型层之字段查询参数及聚合函数


警告:过滤具有日期的DateTimeField不会包含最后一天,因为边界被解释为“给定日期的0am”。

15. date

进行日期对比。


Django模型层之字段查询参数及聚合函数


当USE_TZ为True时,字段将转换为当前时区,然后进行过滤。

16. year

对年份进行匹配。


Django模型层之字段查询参数及聚合函数


当USE_TZ为True时,在过滤之前,datetime字段将转换为当前时区。

17. month

对月份进行匹配。取整数1(1月)至12(12月)。


Django模型层之字段查询参数及聚合函数


当USE_TZ为True时,在过滤之前,datetime字段将转换为当前时区。

18. day

对具体到某一天的匹配。


Django模型层之字段查询参数及聚合函数


当USE_TZ为True时,在过滤之前,datetime字段将转换为当前时区。

19. week

Django1.11中的新功能。根据ISO-8601返回周号(1-52或53),即星期一开始的星期,星期四或之前的第一周。


Django模型层之字段查询参数及聚合函数


当USE_TZ为True时,字段将转换为当前时区,然后进行过滤。

20. week_day

进行“星期几”匹配。 取整数值,星期日为1,星期一为2,星期六为7。


Django模型层之字段查询参数及聚合函数


当USE_TZ为True时,在过滤之前,datetime字段将转换为当前时区。

21. time

Django1.11中的新功能。

将字段的值转为datetime.time格式并进行对比。

Django模型层之字段查询参数及聚合函数


USE_TZ为True时,字段将转换为当前时区,然后进行过滤。

22. hour

对小时进行匹配。 取0和23之间的整数。


Django模型层之字段查询参数及聚合函数


当USE_TZ为True时,值将过滤前转换为当前时区。

23. minute

对分钟匹配。取0和59之间的整数。


Django模型层之字段查询参数及聚合函数


当USE_TZ为True时,值将被过滤前转换为当前时区。

24. second

对秒数进行匹配。取0和59之间的整数。


Django模型层之字段查询参数及聚合函数


当USE_TZ为True时,值将过滤前转换为当前时区。

25. isnull

值为False或True, 相当于SQL语句IS NULL和IS NOT NULL.

Entry.objects.filter(pub_date__isnull=True)

26. search

自1.10版以来已弃用。

27. regex

区分大小写的正则表达式匹配。

Entry.objects.get(title__regex=r'^(An?|The) +')

建议使用原始字符串(例如,r'foo'而不是'foo')来传递正则表达式语法。

28. iregex

不区分大小写的正则表达式匹配。

Entry.objects.get(title__iregex=r'^(an?|the) +')

聚合函数

Django的django.db.models模块提供以下聚合函数。

1. expression

引用模型字段的一个字符串,或者一个query expression。

2. output_field

用来表示返回值的model field,一个可选的参数。

3. **extra

关键字参数可以给聚合函数生成的SQL提供额外的信息。

4. Avg

class Avg(expression, output_field=FloatField(), **extra)[source]

返回给定表达式的平均值,它必须是数值,除非指定不同的output_field。


Django模型层之字段查询参数及聚合函数


5. Count

class Count(expression, distinct=False, **extra)[source]

返回与expression相关的对象的个数。


Django模型层之字段查询参数及聚合函数


6. Max

class Max(expression, output_field=None, **extra)[source]

返回expression的最大值。


Django模型层之字段查询参数及聚合函数


7. Min

class Min(expression, output_field=None, **extra)[source]

返回expression的最小值。


Django模型层之字段查询参数及聚合函数


8. StdDev

class StdDev(expression, sample=False, **extra)[source]

返回expression的标准差。

.

Django模型层之字段查询参数及聚合函数


9. Sum

class Sum(expression, output_field=None, **extra)[source]

计算expression的所有值的和。


Django模型层之字段查询参数及聚合函数


10. Variance

class Variance(expression, sample=False, **extra)[source]

返回expression的方差。


Django模型层之字段查询参数及聚合函数


相关内容

热门资讯

美前副总统:共和党失去了方向,... 2026年是美国的中期选举年,共和党选情不利,可能在年底的选举中遭遇挫败。美国前副总统彭斯5月31日...
南枝原来去过中国?《给阿嬷的情... 《给阿嬷的情书》票房口碑双丰收,目前票房已突破13亿。凤凰卫视最新一期《问答神州》专访了该片导演蓝鸿...
法国海军扣押一艘俄“影子舰队”... 近日,法国海军在大西洋海域扣押了一艘据称从俄罗斯摩尔曼斯克出发的油轮,引发俄方强烈不满。俄新社6月1...
凤凰晚报丨面粉染头模仿黄仁勋,... 今日人物【面粉染头模仿黄仁勋,农村青年走红后称遭“法务”警告】“先赔偿5000元肖像侵权使用费,再删...
亲特朗普极右派候选人领跑哥伦比... 【文/观察者网 熊超然】当地时间5月31日,哥伦比亚总统选举拉开帷幕,首轮投票计票工作已完成逾99%...
2026年度网络举报系列宣传活... 5月28日至29日,以“每一件举报,都是共治的力量——豫你e行 同心护网”为主题的2026年度网络举...
中原首例帝企鹅DNA性别鉴定!... 近日,郑州海昌海洋公园正式对外公布中原首对人工繁育的帝企鹅萌宝的DNA性别鉴定报告。这是中原首个将 ...
我国科学家为细胞信号“导航”开... 新华社济南5月31日电(记者张力元)人体细胞犹如一座精密的通信城市,每天都有大量“指令”穿梭传递,调...
极端大风突袭哈尔滨!过山车停摆... 极目新闻记者 詹钘5月31日,受强对流天气影响,哈尔滨国际会展中心体育场相关设施受到损坏,原计划当晚...
三原电缆取得电缆接头连接用防护... 国家知识产权局信息显示,上海三原电缆附件有限公司取得一项名为“一种电缆接头连接用防护结构”的专利,授...