首页 > 解决方案 > Django __exact 查询集过滤器 - 区分大小写不能按预期工作

问题描述

我正在尝试过滤大小写应该敏感的 Django 查询集,尽管我没有从“__exact”过滤器中得到我期望的结果,我认为它是区分大小写的: https ://docs.djangoproject.com/ zh/3.0/ref/models/querysets/

我的代码如下所示:

lower_case_test = MyObject.objects.filter(name__exact="d")
for item in lower_case_test:
    print("item.name: ", item.name)

我在“MyObject”模型中有 2 个,一个名为“d”,一个名为“D”。

上述代码的输出是:

(u'item: ', u'D') (u'item: ', u'd')

谁能建议这里可能是什么问题?提前致谢。

标签: djangodjango-querysetcase-sensitive

解决方案


如果您使用 SQLLite DB,则 __exact 和 __iexact 查询不区分大小写。

要正确获取功能,请将 MySql 数据库的排序规则更改为 latin1_swedish_cs 或 utf8_bin 以进行区分大小写的比较。

检查链接以获取详细解决方案。 https://code.djangoproject.com/ticket/2170


推荐阅读