diff --git a/django/contrib/admin/views/main.py b/django/contrib/admin/views/main.py
index 2a4b58d1ce..e247cc4288 100644
--- a/django/contrib/admin/views/main.py
+++ b/django/contrib/admin/views/main.py
@@ -292,7 +292,7 @@ def _get_deleted_objects(deleted_objects, perms_needed, user, obj, opts, current
perms_needed.add(related.opts.verbose_name)
class ChangeList(object):
- def __init__(self, request, model, list_display, list_display_links, list_filter, date_hierarchy):
+ def __init__(self, request, model, list_display, list_display_links, list_filter, date_hierarchy, search_fields):
self.model = model
self.opts = model._meta
self.lookup_opts = self.opts
@@ -301,6 +301,7 @@ class ChangeList(object):
self.list_display_links = list_display_links
self.list_filter = list_filter
self.date_hierarchy = date_hierarchy
+ self.search_fields = search_fields
# Get search parameters from the query string.
try:
@@ -474,9 +475,9 @@ class ChangeList(object):
else:
return "%s__icontains" % field_name
- if self.lookup_opts.admin.search_fields and self.query:
+ if self.search_fields and self.query:
for bit in self.query.split():
- or_queries = [models.Q(**{construct_search(field_name): bit}) for field_name in self.lookup_opts.admin.search_fields]
+ or_queries = [models.Q(**{construct_search(field_name): bit}) for field_name in self.search_fields]
other_qs = QuerySet(self.model)
if qs._select_related:
other_qs = other_qs.select_related()
diff --git a/django/db/models/base.py b/django/db/models/base.py
index a9c1f96e0a..3640bd961b 100644
--- a/django/db/models/base.py
+++ b/django/db/models/base.py
@@ -137,7 +137,7 @@ class Model(object):
# of ModelAdmin.
cls._meta.ModelAdmin = type('ModelAdmin', (value, ModelAdmin), {})
# This AdminOptions stuff is legacy and will eventually be removed.
- value = AdminOptions(**dict([(k, v) for k, v in value.__dict__.items() if not k.startswith('_') and k not in ('list_display', 'list_display_links', 'list_filter', 'date_hierarchy', 'save_as')]))
+ value = AdminOptions(**dict([(k, v) for k, v in value.__dict__.items() if not k.startswith('_') and k not in ('list_display', 'list_display_links', 'list_filter', 'date_hierarchy', 'save_as', 'search_fields')]))
value.contribute_to_class(cls, name)
elif hasattr(value, 'contribute_to_class'):
value.contribute_to_class(cls, name)
diff --git a/django/db/models/options.py b/django/db/models/options.py
index a5d2472b8e..b8da8916a3 100644
--- a/django/db/models/options.py
+++ b/django/db/models/options.py
@@ -200,12 +200,11 @@ class Options(object):
class AdminOptions(object):
def __init__(self, fields=None, js=None,
- ordering=None, search_fields=None,
+ ordering=None,
save_on_top=False, list_select_related=False, manager=None, list_per_page=100):
self.fields = fields
self.js = js or []
self.ordering = ordering
- self.search_fields = search_fields or []
self.save_on_top = save_on_top
self.list_select_related = list_select_related
self.list_per_page = list_per_page