使用Django进行不区分大小写的自动完成

时间:2013-07-02 16:48:32

标签: django django-models autocomplete

我使用jquery UI自动完成小部件和Django来查找标签'供用户过滤。我们的数据库首先保存标签用户输入的标签,以便测试'和'测试'是不同的;但是在这个自动完成的情况下,我希望用户只能看到“测试”#39;当他们输入' te'到自动完成字段。

目前,我使用以下命令返回可能的标记列表:

tags = DBTag._model_class.objects.filter(tag__istartswith=term,author_token=self.my_token).distinct('tag')
found = [{'label':"%s" % tag.tag, 'value': "%s" % tag.tag} for tag in tags]
return to_json(found)

但这会返回'测试'并且'测试'。有什么想法吗?

编辑:删除'令牌'来自python循环,因为它是不需要的。

1 个答案:

答案 0 :(得分:1)

为了获得唯一的标记文本匹配,我认为这应该有效:

tag_text = BGTag._model_class.objects.filter(tag__istartswith=term, author_token=self.my_token).extra(select={'lc_tag': 'LOWER(tag)'}).values_list('lc_tag', flat=True).distinct()