一、Django数据库模糊查询
1.1 Q查询
1 from django.db.models importQ2 Q(question__startswith='What')3
4 Q(question__startswith='Who') | Q(question__startswith='What')5
6 #等同于以下SQL语句:
7 WHERE question LIKE 'Who%' OR question LIKE 'What%'
8
9
10 Q(question__startswith='Who') | ~Q(pub_date__year=2018)11
12
13 Poll.objects.get(14 Q(question__startswith='Who'),15 Q(pub_date=date(2018, 8, 8)) | Q(pub_date=date(2018, 8, 6))16 )17 #等同于以下SQL语句:
18
19 SELECT * from polls WHERE question LIKE 'Who%'
20 AND (pub_date = '2017-05-02' OR pub_date = '2009-05-06')
21
22 Problems.objects.filter(Q(tag__contains='search')).order_by("-weight")
1.2 大于、大于等于、小于、小于等于:
1 #__gt 大于>
2 #__gte 大于等于>=
3 #__lt 小于<
4 #__lte 小于等于<=
5
6 Model.objects.filter(age__gt=10) #查询年龄大于10岁的人
7 Model.objects.filter(age__gte=10) #查询年龄大于等于10岁的人
8 Model.objects.filter(age__lt=10) #查询年龄小于10岁的人
9 Model.objects.filter(age__lte=10) #查询年龄小于等于10岁的人
10
11 #不等于/不包含于
12 Model.objects.filter().excute(age=10) #查询年龄不为10的人
13 Model.objects.filter().excute(age__in=[10, 20]) #查询年龄不在 [10, 20] 的人
1.3 filter中的模糊操作
#__exact 精确等于 like 'aaa'#__iexact 精确等于 忽略大小写 ilike 'aaa'#__contains 包含 like '%aaa%'#__icontains 包含,忽略大小写 ilike '%aaa%',但是对于sqlite来说,contains的作用效果等同于icontains。#__startswith 以…开头#