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)
相关推荐
码云数智-大飞7 分钟前
使用 Python 高效提取 PDF 中的表格数据并导出为 TXT 或 Excel
python
biuyyyxxx1 小时前
Python自动化办公学习笔记(一) 工具安装&教程
笔记·python·学习·自动化
极客数模2 小时前
【2026美赛赛题初步翻译F题】2026_ICM_Problem_F
大数据·c语言·python·数学建模·matlab
小鸡吃米…3 小时前
机器学习中的代价函数
人工智能·python·机器学习
Li emily4 小时前
如何通过外汇API平台快速实现实时数据接入?
开发语言·python·api·fastapi·美股
m0_561359674 小时前
掌握Python魔法方法(Magic Methods)
jvm·数据库·python
Ulyanov4 小时前
顶层设计——单脉冲雷达仿真器的灵魂蓝图
python·算法·pyside·仿真系统·单脉冲
2401_838472515 小时前
使用Python进行图像识别:CNN卷积神经网络实战
jvm·数据库·python
CoLiuRs5 小时前
语义搜索系统原理与实现
redis·python·向量·es
zhihuaba5 小时前
使用PyTorch构建你的第一个神经网络
jvm·数据库·python