一、双下划线的使用
1 、说明
在Django中有相当多的操作是通过双下划线与动作连接起来使用,为了以后更加方便的查找和使用,
2、比较符
-
说明
gt(大于)、lt(小于)、eq(等于)、gte(大于等于)、 lte(小于等于)
-
示例代码
UserInfo.objects.filter(uid__gt=1) # 获取id大于1的值 UserInfo.objects.filter(uid__gte=1) # 获取id大于等于1的值 UserInfo.objects.filter(uid__lt=10) # 获取id小于10的值 UserInfo.objects.filter(uid__lte=10) # 获取id小于10的值 UserInfo.objects.filter(uidd__lt=10, uid__gt=1) # 获取id大于1 且 小于10的值
3、范围操作符
-
说明
in(包含)、contain(包括)、range(在范围内)、isnull(为空)
startswith,istartswith, endswith, iendswith
-
示例代码
UserInfo.objects.filter(id__in=[11, 22, 33]) # 获取id等于11、22、33的数据 UserInfo.objects.exclude(id__in=[11, 22, 33]) # not in
UserInfo.objects.filter(name__contains="小") UserInfo.objects.filter(name__icontains="test") # icontains大小写不敏感 UserInfo.objects.exclude(name__icontains="h")
UserInfo.objects.filter(id__range=[1, 2]) # 范围bettwen and
UserInfo.objects.filter(create_date__isnull=True)
4、时间处理
-
说明
时间操作也是我们开发中的常用的功能
-
示例代码
# year:查询某年 UserInfo.objects.filter(create_date__year=2018) # month:查询某月 UserInfo.objects.filter(create_date__month=12) # day:某天 UserInfo.objects.filter(create_date__day=3) # 查询时间段 UserInfo.objects.filter(create_date__range=(datetime.date(2018, 1, 1), datetime.date(2018, 10, 4)) # 大于等于某个时间 UserInfo .filter(create_date__gte=datetime.date(2018, 1, 1))