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)
相关推荐
朝阳5813 分钟前
使用过程宏实现自动化新增功能
后端·rust
棉猴9 分钟前
Pygame中实现图像旋转效果-应用2-1
python·pygame·游戏编程·图像旋转·rotate
依米s9 分钟前
Pycharm 、IDEA卡顿问题解决方案
ide·python·性能优化·pycharm
大厂码农老A25 分钟前
P10老板一句‘搞不定就P0’,15分钟我用Arthas捞回1000万资损
java·前端·后端
Pomelo_刘金34 分钟前
常见的幂等方案
后端
tonydf38 分钟前
Blazor Server项目里,集成一个富文本编辑器
后端
爱学习的徐徐44 分钟前
Python 豆瓣TOP250 爬虫类讲解
爬虫·python
文心快码BaiduComate1 小时前
文心快码已接入GLM-4.6模型
前端·后端·设计模式
老歌老听老掉牙1 小时前
SymPy 绘图完全指南:从基础到高级应用
python·绘图·sympy