Django中的查询条件封装总结

基本查询

  • 简单相等查询

    python 复制代码
    User.objects.filter(name="jane")
  • 包含查询(类似于SQL中的LIKE '%value%')

    python 复制代码
    query = Q(name__contains="jane")
    # 或者忽略大小写的匹配
    query = Q(name__icontains="jane")

使用 Q 对象进行复杂查询

  • 组合多个条件(AND逻辑)

    python 复制代码
    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逻辑)

    python 复制代码
    # 查找名字包含'jane'或者手机号码包含'138'的用户
    query = Q(name__contains='jane') | Q(mobile__contains='138')
    users = User.objects.filter(query)
  • 混合使用AND和OR逻辑

    python 复制代码
    # 查找名字包含'jane'且类型为2,或者手机号码包含'138'的用户
    query = (Q(name__contains='jane') & Q(type=2)) | Q(mobile__contains='138')
    users = User.objects.filter(query)

更多查询样例

  • 范围查询

    python 复制代码
    # 查找年龄在18到60之间的用户
    users = User.objects.filter(age__range=(18, 60))
  • 日期查询

    python 复制代码
    # 查找创建时间在特定日期之后的用户
    from datetime import date
    users = User.objects.filter(create_time__gte=date(2025, 3, 1))
  • 排除某些记录

    python 复制代码
    # 查找所有不是类型2的用户
    users = User.objects.exclude(type=2)
相关推荐
羸弱的穷酸书生4 分钟前
python中各种数据类型的转换方法
python
uzong10 分钟前
后端系统设计文档模板
后端
D___H13 分钟前
Part8_编写自己的解释器
python
幽络源小助理14 分钟前
SpringBoot+Vue车票管理系统源码下载 – 幽络源免费项目实战代码
vue.js·spring boot·后端
TDengine (老段)27 分钟前
TDengine Python 连接器入门指南
大数据·数据库·python·物联网·时序数据库·tdengine·涛思数据
uzong43 分钟前
软件架构指南 Software Architecture Guide
后端
又是忙碌的一天43 分钟前
SpringBoot 创建及登录、拦截器
java·spring boot·后端
田里的水稻1 小时前
C++_python_相互之间的包含调用方法
c++·chrome·python
2501_941870561 小时前
面向微服务熔断与流量削峰策略的互联网系统稳定性设计与多语言工程实践分享
开发语言·python
GIS之路2 小时前
GDAL 实现矢量裁剪
前端·python·信息可视化