Django中的查询条件封装总结
目录
Django中的查询条件封装总结
基本查询
简单相等查询 :
User.objects.filter(name="jane")
包含查询(类似于SQL中的LIKE ‘%value%’) :
query = Q(name__contains="jane") # 或者忽略大小写的匹配 query = Q(name__icontains="jane")
使用 Q
对象进行复杂查询
组合多个条件(AND逻辑) :
from django.db.models import Q query = Q() if name: query &= Q(name__contains=name) if mobile: query &= Q(mobile__contains=mobile) query &= Q(type=2) # 注意这里的更正 users = User.objects.filter(query)
或条件查询(OR逻辑) :
# 查找名字包含'jane'或者手机号码包含'138'的用户 query = Q(name__contains='jane') | Q(mobile__contains='138') users = User.objects.filter(query)
混合使用AND和OR逻辑 :
# 查找名字包含'jane'且类型为2,或者手机号码包含'138'的用户 query = (Q(name__contains='jane') & Q(type=2)) | Q(mobile__contains='138') users = User.objects.filter(query)
更多查询样例
范围查询 :
# 查找年龄在18到60之间的用户 users = User.objects.filter(age__range=(18, 60))
日期查询 :
# 查找创建时间在特定日期之后的用户 from datetime import date users = User.objects.filter(create_time__gte=date(2025, 3, 1))
排除某些记录 :
# 查找所有不是类型2的用户 users = User.objects.exclude(type=2)