summaryrefslogtreecommitdiff
path: root/django
diff options
context:
space:
mode:
Diffstat (limited to 'django')
-rw-r--r--django/contrib/admin/options.py19
1 files changed, 14 insertions, 5 deletions
diff --git a/django/contrib/admin/options.py b/django/contrib/admin/options.py
index 0b941df091..94e6548650 100644
--- a/django/contrib/admin/options.py
+++ b/django/contrib/admin/options.py
@@ -277,9 +277,10 @@ class BaseModelAdmin(six.with_metaclass(RenameBaseModelAdminMethods)):
return "%s__icontains" % field_name
use_distinct = False
- if self.search_fields and search_term:
+ search_fields = self.get_search_fields(request)
+ if search_fields and search_term:
orm_lookups = [construct_search(str(search_field))
- for search_field in self.search_fields]
+ for search_field in search_fields]
for bit in search_term.split():
or_queries = [models.Q(**{orm_lookup: bit})
for orm_lookup in orm_lookups]
@@ -767,6 +768,13 @@ class ModelAdmin(BaseModelAdmin):
"""
return self.list_filter
+ def get_search_fields(self, request):
+ """
+ Returns a sequence containing the fields to be searched whenever
+ somebody submits a search query.
+ """
+ return self.search_fields
+
def get_preserved_filters(self, request):
"""
Returns the preserved filters querystring.
@@ -1243,6 +1251,7 @@ class ModelAdmin(BaseModelAdmin):
list_display = self.get_list_display(request)
list_display_links = self.get_list_display_links(request, list_display)
list_filter = self.get_list_filter(request)
+ search_fields = self.get_search_fields(request)
# Check actions to see if any are available on this changelist
actions = self.get_actions(request)
@@ -1254,9 +1263,9 @@ class ModelAdmin(BaseModelAdmin):
try:
cl = ChangeList(request, self.model, list_display,
list_display_links, list_filter, self.date_hierarchy,
- self.search_fields, self.list_select_related,
- self.list_per_page, self.list_max_show_all, self.list_editable,
- self)
+ search_fields, self.list_select_related, self.list_per_page,
+ self.list_max_show_all, self.list_editable, self)
+
except IncorrectLookupParameters:
# Wacky lookup parameters were given, so redirect to the main
# changelist page, without parameters, and pass an 'invalid=1'