对于我的Django应用程序,我使用PostgreSQL(9.3),我想在我的数据库中使用不区分大小写的文本。为此,Popstgres有一个名为“citext”的“新”扩展名。
据我了解,django无法使用此扩展程序,因此我创建了一个自定义字段:
http://crp.com/ajax.php?prc=diagnoses&name=ƒsƒU&diagres=0-0,1-3,2-2,3-3,4-3,5-2
我使用CharField作为基类,因为我仍然希望能够设置最大长度的所有django特权以及随附的验证器。
数据库是正确创建的,我最终得到了citext-tables:
class RsCharField(models.CharField):
...
def db_type(self, connection):
return 'citext'
但是当我进行查询时,django会将查询转换为:
description | citext | not null
仍然区分大小写。当我手动选择并删除:: text时,它的工作原理不区分大小。
问题:我做错了什么,在进行查询时,如何让我的CharFields在django中表现得像不区分大小写?
注意:最重要的是,我希望我的索引的行为类似于不区分大小写的索引。
答案 0 :(得分:1)
使用django.contrib.postgres.fields.citext中提供的类 https://docs.djangoproject.com/pt-br/1.11/_modules/django/contrib/postgres/fields/citext/