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)
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值