summaryrefslogtreecommitdiff
path: root/django
diff options
context:
space:
mode:
authorLoic Bistuer <loic.bistuer@sixmedia.com>2013-08-03 23:15:15 +0700
committerTim Graham <timograham@gmail.com>2013-08-03 20:02:43 -0400
commit0bcdcc7eb9ca2265cb83225257df65a8def3e14a (patch)
tree68e7adb225c8a237d5edeaaf93b9b4a171117431 /django
parenta0c58113b9de072482a5fee2a085218e67971b41 (diff)
Added ModelAdmin.get_search_fields.
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'