diff --git a/django/contrib/admin/validation.py b/django/contrib/admin/validation.py
index 50e4143..9eacb38 100644
a
|
b
|
def validate(cls, model):
|
57 | 57 | if hasattr(cls, 'list_filter'): |
58 | 58 | check_isseq(cls, 'list_filter', cls.list_filter) |
59 | 59 | for idx, field in enumerate(cls.list_filter): |
60 | | get_field(cls, model, opts, 'list_filter[%d]' % idx, field) |
| 60 | if not isinstance(field, models.Field): |
| 61 | get_field(cls, model, opts, 'list_filter[%d]' % idx, field) |
61 | 62 | |
62 | 63 | # list_per_page = 100 |
63 | 64 | if hasattr(cls, 'list_per_page') and not isinstance(cls.list_per_page, int): |
diff --git a/django/contrib/admin/views/main.py b/django/contrib/admin/views/main.py
index df0fd9f..37dc0fb 100644
a
|
b
|
class ChangeList(object):
|
74 | 74 | def get_filters(self, request): |
75 | 75 | filter_specs = [] |
76 | 76 | if self.list_filter: |
77 | | filter_fields = [self.lookup_opts.get_field(field_name) for field_name in self.list_filter] |
78 | | for f in filter_fields: |
79 | | spec = FilterSpec.create(f, request, self.params, self.model, self.model_admin) |
| 77 | for field in self.list_filter: |
| 78 | if not isinstance(field, models.Field): |
| 79 | field = self.lookup_opts.get_field(field) |
| 80 | spec = FilterSpec.create(field, request, self.params, self.model, self.model_admin) |
80 | 81 | if spec and spec.has_output(): |
81 | 82 | filter_specs.append(spec) |
82 | 83 | return filter_specs, bool(filter_specs) |