#1465 closed enhancement (fixed)
[patch] regular expression field lookups
| Reported by: | Owned by: | Adrian Holovaty | |
|---|---|---|---|
| Component: | Core (Other) | Version: | |
| Severity: | minor | Keywords: | |
| Cc: | Triage Stage: | Design decision needed | |
| Has patch: | yes | Needs documentation: | no |
| Needs tests: | no | Patch needs improvement: | no |
| Easy pickings: | no | UI/UX: | no |
Description
The attached patch implements regular expression field lookups against r2487 of trunk.
The lookups are performed via "fieldname__regex" or "fieldname__iregex" for case-sensitive and -insensitive matching, respectively.
Only PostgreSQL implements case-sensitive matching; for all other databases, case-insensitive matching is performed regardless of which type is specified.
Only PostgreSQL (assuming system defaults) and sqlite implement PCRE-ish "advanced" regular expressions; the other databases only support POSIX "extended" regular expressions.
MSSQL/Transact-SQL does not implement regular expressions (as far as I can tell from the documentation available at MSDN); attempting to use regex or iregex field lookups with this backend will raise a NotImplementedError.
Regular expression searches can be performed through the admin interface by prepending and appending a slash ("/") character to the search term (e.g., /like this/). This is backwards-incompatible, but with a low chance of collision with existing usage (i.e., it's unlikely that a user is going to input a search phrase both beginning and ending with a slash; I considered adding a toggle for this behavior in settings.py, but decided against it for the time being).
Attachments (6)
Change History (16)
by , 20 years ago
| Attachment: | trunk-regex_field_lookup.diff added |
|---|
comment:1 by , 20 years ago
| priority: | normal → low |
|---|---|
| Severity: | normal → minor |
comment:2 by , 19 years ago
| Triage Stage: | Unreviewed → Design decision needed |
|---|
comment:3 by , 19 years ago
IIRC, the core developers liked the idea but disliked the admin regex searches. I'll create an updated patch against current trunk if I know what behavior to implement. :)
by , 18 years ago
| Attachment: | regex-field-lookups.diff added |
|---|
Patch aganst r5486 of trunk to implement regex field lookups
comment:4 by , 18 years ago
I've brought the patch for this ticket's implementation up to date; documentation is now included, as well as full support for both case sensitive and insensitive matching on the supported platforms (MySQL, PostgreSQL, and sqlite).
by , 18 years ago
| Attachment: | regex-field-lookups.2.diff added |
|---|
Patch aganst r5490 of trunk to implement regex field lookups, w/docs, w/tests
by , 18 years ago
| Attachment: | regex-field-lookups.3.diff added |
|---|
Patch aganst r5519 of trunk (post-oracle-merge) to implement regex field lookups
comment:7 by , 18 years ago
Initially I got this error:
File "/home/ikelly/projects/django.trunk/django/db/models/query.py", line 802, in get_where_clause
if settings.DATABASE_ENGINE == 'oracle':
NameError: global name 'settings' is not defined
After adding the appropriate import statement, the test cases passed and I didn't find any bugs.
comment:8 by , 18 years ago
I think we're all set with the latest version of the patch. Requesting final review and (hopefully) commit. ^_^
comment:9 by , 18 years ago
| Resolution: | → fixed |
|---|---|
| Status: | new → closed |
comment:10 by , 18 years ago
| Reporter: | changed from to |
|---|
patch against r2487 of trunk to implement regular expression field lookups