【发布时间】:2016-02-04 20:54:19
【问题描述】:
对于我的 Django 应用程序,我使用 PostgreSQL (9.3),并且我想在我的数据库中使用不区分大小写的文本。为此,Popstgres 有一个名为“citext”的“新”扩展。
据我了解,django 不能开箱即用地使用这个扩展,所以我做了一个自定义字段:
class RsCharField(models.CharField):
...
def db_type(self, connection):
return 'citext'
我使用 CharField 作为基类,因为我仍然希望能够设置最大长度以及随之而来的验证器的所有 django 特权。
数据库已正确创建,我最终得到了 citext-tables:
description | citext | not null
但是当我进行查询时,django 会将查询翻译为:
SELECT * FROM .... WHERE mytable.description::text LIKE 'TEST%'
这仍然是区分大小写的。当我手动选择并删除 ::text 时,它不区分大小写。
问题:我做错了什么,如何让我的 CharFields 在查询时表现得像 django 中不区分大小写的字段?
注意:最重要的是,我希望我的索引表现得像不区分大小写的索引。
【问题讨论】:
-
你能分享你的查询集过滤器吗?
标签: django postgresql python-3.x