字段查找

字段查找

  • exact

精确匹配,例子:

Entry.objects.get(id__exact=3)
  • iexact

不区分大小写的精确匹配

Blog.objects.get(name__iexact='beatles blog')
  • contains

查找包含某字符的实例

# 匹配标题包含 'john' 的博文
>>> Entry.objects.get(headline__contains='john')
<Entry: John 和 Paul 教你作曲>
  • icontains

不区分大小写的查找包含某字符的实例

>>> Entry.objects.get(headline__icontains='JOHN')
<Entry: John 和 Paul 教你作曲>
  • in

用一个列表或查询集作为查询条件

# 列表作为查询条件
Entry.objects.filter(id__in=[3, 4, 5])

# 查询集作为查询条件
# 查询作者为 John 的博文
inner_qs = Author.objects.filter(name__in=['John'])
Entry.objects.filter(authors__in=inner_qs)
  • 数值比较

大于: gt

# 排名大于1
Entry.objects.filter(rating__gt=1)

大于或等于: gte

# 排名大于或等于1
Entry.objects.filter(rating__gte=1)

小于:lt

# 排名小于2
Entry.objects.filter(rating__lt=2)

小于或等于:lte

# 排名小于或等于2
Entry.objects.filter(rating__lte=2)
  • startswith

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

# 查询标题为 John 开头的博文
Entry.objects.filter(headline__startswith='John')
  • istartswith

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

# 查询标题为 John 开头的博文
Entry.objects.filter(headline__startswith='JOHN')
  • endswith

区分大小写,匹配结尾

Entry.objects.filter(headline__endswith='作曲')
  • iendswith

不区分大小写,匹配结尾

Entry.objects.filter(headline__iendswith='作曲')
  • range

查找某范围测试的实例

# 查找排名为 1——3 的
Entry.objects.filter(rating__range=(1, 3))

也常用于查找某时间段

# 查找某时间段内的博文

import datetime
start_date = datetime.date(2017, 1, 1)
end_date = datetime.date(2017, 3, 31)
Entry.objects.filter(pub_date__range=(start_date, end_date))
  • year

按年份查找

# 查找 2017 年发布的博文
Entry.objects.filter(pub_date__year=2017)
  • month

按月份查找

# 查找2月发布的博文(包含任何年份)
Entry.objects.filter(pub_date__month=2)
  • day

按日查找

# 查找3号发布的博文(包含任何年份月份)
Entry.objects.filter(pub_date__day=3)
  • week_day

按星期几查找

参数从1(星期日)开始到7(星期六)

# 查找星期三发布的博文
Entry.objects.filter(pub_date__week_day=4)
  • hour

按小时查询,取 0 到 23 之间的整数。

Event.objects.filter(timestamp__hour=23)
  • minute

按分钟查找,取0和59之间的整数。

Event.objects.filter(timestamp__minute=29)
  • second

按秒查询,取0和59之间的整数。

Event.objects.filter(timestamp__second=31)
  • isnull

参数为 True 或 False, 用于按时间是否存在来查询

# 查询没有填写 pub_date 的博文
Entry.objects.filter(pub_date__isnull=True)

# 查询填写了 pub_date 的博文
Entry.objects.filter(pub_date__isnull=False)
  • 正则表达式

区分大小写的正则表达式查询:regex
不区分大小写的正则表达式查询:iregex
(待补充)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 初衷:看了很多视频、文章,最后却通通忘记了,别人的知识依旧是别人的,自己却什么都没获得。此系列文章旨在加深自己的印...
    DCbryant阅读 9,526评论 0 20
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,773评论 19 139
  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 8,536评论 0 4
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 32,131评论 18 399
  • 11月7日,今天我跟我同桌在聊电影,我说了很多我知道的,我看过的电影的名字,有国内的言情片,有国外迪士尼的...
    山榛隰苓阅读 1,248评论 0 0