当前位置: 首页 > article >正文

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)
    

http://www.kler.cn/a/588641.html

相关文章:

  • 蓝桥杯——车牌(dfs全排列问题)
  • 【R语言入门】向量,存储和计算
  • Oracle Linux Server 7.9安装fail2ban
  • 【QA】建造者模式在Qt有哪些应用
  • Axure设计之动态折线图教程(中继器)
  • 微服务架构: SpringCloud实战案例
  • 基于CSV构建轻量级数据库:SQL与Excel操作的双模实践
  • SSL/TLS 1.2过程:Client端如何验证服务端证书?
  • 鸿蒙 @ohos.arkui.inspector (布局回调)
  • X86 RouterOS 7.18 设置笔记七:不使用Upnp的映射方法
  • 5周0基础冲刺蓝桥杯省重点 1
  • Leetcode3110:字符串的分数
  • 【Function】使用托管身份调用Function App触发器,以增强安全性
  • 使用DeepSeek制作可视化图表和流程图
  • MyBatis源码分析のSql执行流程
  • 在线 SQL 转 flask SQLAlchemy 模型
  • 贪心算法和遗传算法优劣对比——c#
  • 笔记:代码随想录算法训练营day46:LeetCode647. 回文子串\516.最长回文子序列
  • 03 介绍ffmpeg 视频解码流程
  • Ubuntu服务器安装JupyterNotebook,以便通过浏览器访问Jupyter