You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何不区分大小写检索Django模型中的指定元素?

Django 不区分大小写查询模型字段的解决方案

解决这个问题有几种实用的方式,根据你的场景选择即可:

  • 使用__iexact查询条件:这是Django ORM原生支持的不区分大小写精确匹配方法,直接替换普通的等于匹配逻辑就行:

    User.objects.get(user_name__iexact=name)
    

    不管传入的name是Hello World还是hElLO wOrLD,只要字符内容和模型里的user_name一致,就能匹配成功,不需要手动处理大小写。

  • 统一转小写匹配:如果你的数据库支持字符串小写转换函数(比如MySQL、PostgreSQL都支持),可以同时把字段和查询参数转成小写后再匹配:

    User.objects.get(user_name__lower=name.lower())
    

    要是想保证跨数据库兼容性,也可以用Django的Lower函数实现:

    from django.db.models.functions import Lower
    User.objects.annotate(lower_user_name=Lower('user_name')).get(lower_user_name=name.lower())
    

    你之前只转了name的小写,没处理模型里的user_name字段,所以当模型里存的是HELLO WORLD时匹配失败,这个方法就是把两边都转成统一的小写再对比,自然能匹配上。

注意:使用get()时要确保只有一条匹配结果,若存在多条符合条件的记录,会抛出MultipleObjectsReturned异常;如果不确定结果数量,换成filter(...).first()会更稳妥。

内容的提问来源于stack exchange,提问作者Назар Головач

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 14:32:03