diff options
| author | Loic Bistuer <loic.bistuer@sixmedia.com> | 2013-08-03 23:15:15 +0700 |
|---|---|---|
| committer | Tim Graham <timograham@gmail.com> | 2013-08-03 20:02:43 -0400 |
| commit | 0bcdcc7eb9ca2265cb83225257df65a8def3e14a (patch) | |
| tree | 68e7adb225c8a237d5edeaaf93b9b4a171117431 /django | |
| parent | a0c58113b9de072482a5fee2a085218e67971b41 (diff) | |
Added ModelAdmin.get_search_fields.
Diffstat (limited to 'django')
| -rw-r--r-- | django/contrib/admin/options.py | 19 |
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' |
