字段查找

字段查找

  • exact

精确匹配,例子:

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

不区分大小写的精确匹配

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

查找包含某字符的实例

# 匹配标题包含 'john' 的博文
>>> Entry.objects.get(headline__contains='john')

  • icontains

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

>>> Entry.objects.get(headline__icontains='JOHN')

  • 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
(待补充)

你可能感兴趣的:(字段查找)