mirror of
https://github.com/django/django.git
synced 2025-10-26 15:16:09 +00:00
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
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user