#24169 closed Bug (fixed)
ArrayField can't use __contained_by or __overlap queries for CharField
| Reported by: | Joel Burton | Owned by: | |
|---|---|---|---|
| Component: | contrib.postgres | Version: | 1.8alpha1 |
| Severity: | Normal | Keywords: | |
| Cc: | Triage Stage: | Accepted | |
| Has patch: | yes | Needs documentation: | no |
| Needs tests: | no | Patch needs improvement: | no |
| Easy pickings: | no | UI/UX: | no |
Description (last modified by )
ArrayField's lookup.py uses the @> operator for __contains, the <@ operator for __contained_by, and the && operator for __overlap.
When the field uses CharField (Postgres' varchar()), __contains works, but __contained_by and __overlap do not, as Postgres does not define <@ and && operators for an array of varchar[] (it does for text[]).
__contains works because, in array.py, there is a custom lookup, "ArrayOverlap", the outputs a cast to cast the array query value to, say, "::varchar(10)[]"
If there are similar custom lookups for __contained_by and __overlap, these then work.
Attachments (1)
Change History (5)
comment:1 by , 11 years ago
| Description: | modified (diff) |
|---|
by , 11 years ago
| Attachment: | array.py-patch added |
|---|
comment:2 by , 11 years ago
| Triage Stage: | Unreviewed → Accepted |
|---|---|
| Type: | Uncategorized → Bug |
Any chance you could send a pull request on GitHub? That makes it quite a bit easier to review the patch, run the tests, and merge it.
comment:3 by , 11 years ago
| Owner: | set to |
|---|---|
| Resolution: | → fixed |
| Status: | new → closed |
Patch, along with tests