字段查找
- 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
(待补充)