Opened 10 years ago
Closed 10 years ago
#25538 closed Cleanup/optimization (duplicate)
Clarify the operator that icontains uses on Postgresql
| Reported by: | Artyem Klimenko | Owned by: | nobody |
|---|---|---|---|
| Component: | Documentation | Version: | 1.8 |
| Severity: | Normal | Keywords: | postgresql icontains ilike |
| Cc: | Triage Stage: | Unreviewed | |
| Has patch: | no | Needs documentation: | no |
| Needs tests: | no | Patch needs improvement: | no |
| Easy pickings: | no | UI/UX: | no |
Description
https://docs.djangoproject.com/en/1.8/ref/models/querysets/#icontains
SQL equivalent:
SELECT ... WHERE headline ILIKE '%Lennon%';
ilike exist in PostgreSQL, but not used, and it is not obvious.
q = NetworkObject.objects.filter(string_view__icontains='test').only('id')
print(q.query)
SELECT "core_networkobject"."id" FROM "core_networkobject" WHERE UPPER("core_networkobject"."string_view"::text) LIKE UPPER(%test%)
I understand that you can not correct the behavior icontains, but you can clarify this issue in the documentation.
And maybe add to the documentation this lookup.
from django.db import models
from django.db.models.lookups import IContains
class PostgreILike(IContains):
lookup_name = 'ilike'
def as_postgresql(self, compiler, connection):
lhs, lhs_params = self.process_lhs(compiler, connection)
rhs, rhs_params = self.process_rhs(compiler, connection)
params = lhs_params + rhs_params
return '%s ILIKE %s' % (lhs, rhs), params
models.CharField.register_lookup(PostgreILike)
models.TextField.register_lookup(PostgreILike)
P.S. Sorry for my poor English.
Change History (1)
comment:1 by , 10 years ago
| Resolution: | → duplicate |
|---|---|
| Status: | new → closed |
| Summary: | icontains and Postgresql → Clarify the operator that icontains uses on Postgresql |
Note:
See TracTickets
for help on using tickets.
Duplicate of #20775