Django QuerySet中的icontains不给出不区分大小写的结果?

时间:2014-02-20 10:53:57

标签: python mysql django django-models

我正在使用Django1.6,我正在尝试使用QuerySet过滤器,但它表现得很奇怪。

这是我的代码:

test_listing = Test.objects.filter(site__id=_site_id, show_on_site=True)

然后我试图根据搜索到的文本获取列表:

test_listing = test_listing.filter(name__icontains = searched_text)

我正在使用MySQL作为我项目的数据库。

当我搜索'foo'时,它返回一个空白列表,但是当我搜索'FOO'时,它会返回在我的Test表中有一个FOOBAR条目作为名称的对象列表。

为什么它表现得那么奇怪......?

1 个答案:

答案 0 :(得分:9)

这可能是由于你使用的mysql-db,可能是你的db表(name)列有sql区分大小写的coollat​​e

ALTER TABLE t1 MODIFY
    col1 VARCHAR(5)
      CHARACTER SET latin1
      COLLATE latin1_swedish_ci;