为什么用icontains过滤django是区分大小写的?

时间:2017-11-07 07:21:31

标签: python mysql django

我想用icontains过滤一个查询集,因为我不希望过滤区分大小写:

some_title = "Foo"
result = Article.objects.filter(title__icontains=some_title)

标题为“foo”的文章不在结果范围内。为什么? 我正在使用Django(1.9.12)。

1 个答案:

答案 0 :(得分:0)

我使用的是Mysql数据库,其排序规则设置为X_bin。我用以下内容更改了文章表的排序规则:

ALTER TABLE articles CHARACTER SET utf8 COLLATE utf8_general_ci;

适用于所有列:

ALTER TABLE articles CONVERT TO CHARACTER SET utf8;

不知何故,旧的排序规则使用另一种字符串比较方法,它不尊重字母大小写。新的校对utf8_general_ci。