django 内置了很多查询表达式,建议过一遍 django 官方文档留个印象,了解每个表达式的作用,以后碰到相关的需求就可以快速定位到文档查询其用途:Field lookups
django使用filter时为了提高查找效率,有以下几种常用方法:
(1)contains
contains是 精确大小写
qs.filter(name__contains="e")
SQL语句 :
'contains': 'LIKE BINARY %s',
(2)icontains
’icontains’中的’i’表示忽略大小写
qs.filter(name__icontains="e")
SQL语句 :
'icontains': 'LIKE %s',
(3)in
在列表中
Entry.objects.filter(id__in=[1, 3, 4])

SQL语句 :
SELECT ... WHERE id IN (1, 3, 4);

(4) gt
gt:大于
Entry.objects.filter(id__gt=4)

SQL语句 :
SELECT ... WHERE id > 4;

同理还有 gte lt lte (大等、小于、小等)
(5) startwith
查找以xxx开头并区分大小写
Entry.objects.filter(headline__istartswith='will')

SQL语句 :
SELECT ... WHERE headline ILIKE 'Will%';

同理还有 istartwith :查找以xxx开头不区分大小写
(6)endswitch
查找xxx以结尾并区分大小写
Entry.objects.filter(headline__endswith='cats')

SQL语句 :
SELECT ... WHERE headline LIKE '%cats';

同理还有 iendwith :查找以xxx结尾不区分大小写
(7)range
查找范围:
import datetime
start_date = datetime.date(2005, 1, 1)
end_date = datetime.date(2005, 3, 31)
Entry.objects.filter(pub_date__range=(start_date, end_date))

SQL语句 :
SELECT ... WHERE pub_date BETWEEN '2005-01-01' and '2005-03-31';
这样的方法还多,推荐看一遍官方文档
这些django内置的方法都非常好用,记住后对于基础的搜索以及查找都会简单不少。