diff options
| author | Adrian Holovaty <adrian@holovaty.com> | 2005-11-30 06:14:05 +0000 |
|---|---|---|
| committer | Adrian Holovaty <adrian@holovaty.com> | 2005-11-30 06:14:05 +0000 |
| commit | 9541d7a7c70df6be8c8673789437c717b884e039 (patch) | |
| tree | 442c6caa5e44a3d1cf850dadbebaef701543346f /django/contrib/admin/views | |
| parent | 837435a08aaf35696e3adb4ece2229638f82da48 (diff) | |
Fixed #251 -- Added OR support to queries, via the new 'complex' DB API keyword argument. Updated docs and added unit tests. Also removed old, undocumented '_or' parameter. Thanks, Hugo.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@1508 bcc190cf-cafb-0310-a4f2-bffc1f526a37
Diffstat (limited to 'django/contrib/admin/views')
| -rw-r--r-- | django/contrib/admin/views/main.py | 12 |
1 files changed, 5 insertions, 7 deletions
diff --git a/django/contrib/admin/views/main.py b/django/contrib/admin/views/main.py index 089cc5381a..11a7b9ba47 100644 --- a/django/contrib/admin/views/main.py +++ b/django/contrib/admin/views/main.py @@ -216,19 +216,17 @@ class ChangeList(object): break lookup_params['order_by'] = ((order_type == 'desc' and '-' or '') + lookup_order_field,) if lookup_opts.admin.search_fields and query: - or_queries = [] + complex_queries = [] for bit in query.split(): - or_query = [] + or_queries = [] for field_name in lookup_opts.admin.search_fields: - or_query.append(('%s__icontains' % field_name, bit)) - or_queries.append(or_query) - lookup_params['_or'] = or_queries - + or_queries.append(meta.Q(**{'%s__icontains' % field_name: bit})) + complex_queries.append(reduce(operator.or_, or_queries)) + lookup_params['complex'] = reduce(operator.and_, complex_queries) if opts.one_to_one_field: lookup_params.update(opts.one_to_one_field.rel.limit_choices_to) self.lookup_params = lookup_params - def change_list(request, app_label, module_name): try: cl = ChangeList(request, app_label, module_name) |
