不支持对 CharField 进行“lower”查找或不允许在该字段上进行连接

Mic*_*rts 9 django postgresql django-orm

我正在尝试对查询集执行稍微更高级的查找,如下所述:https: //docs.djangoproject.com/en/3.0/topics/db/search/

我的查询集如下:

            queryset = queryset.filter(
                Q(user__username__unaccent__lower__trigram_similar=search) |
                Q(user__first_name__unaccent__lower__trigram_similar=search) |
                Q(user__last_name__unaccent__lower__trigram_similar=search)
            )
Run Code Online (Sandbox Code Playgroud)

我已将该django.contrib.postgres应用程序包含在我的settings.py.

但是,我收到以下错误:

django.core.exceptions.FieldError: Unsupported lookup 'lower' for CharField or join on the field not permitted.

有谁知道搜索搜索的正确程序?

我正在使用 Django >3 和 postgres 引擎版本 11。

Mic*_*rts 7

啊……看来我未能安装这个特定的查找。

流程如下:

from django.db.models import CharField
from django.db.models.functions import Lower

CharField.register_lookup(Lower)
Run Code Online (Sandbox Code Playgroud)