Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

Fixed #21129 -- Prevented admin filter params modifications from thro…

…wing an exception.

Thanks Tuttle for the report.
  • Loading branch information...
commit 5381317fe37d50384ef9a3bf3fb6b64ff4e9215c 1 parent 651bed0
@tim-schilling tim-schilling authored timgraham committed
Showing with 16 additions and 0 deletions.
  1. +4 −0 django/contrib/admin/options.py
  2. +12 −0 tests/modeladmin/tests.py
View
4 django/contrib/admin/options.py
@@ -348,6 +348,10 @@ def lookup_allowed(self, lookup, value):
# later.
return True
if hasattr(field, 'rel'):
+ if field.rel is None:
+ # This property or relation doesn't exist, but it's allowed
+ # since it's ignored in ChangeList.get_filters().
+ return True
model = field.rel.to
rel_name = field.rel.get_related_field().name
elif isinstance(field, RelatedObject):
View
12 tests/modeladmin/tests.py
@@ -95,6 +95,18 @@ def get_fieldsets(self, request, obj=None):
form = ma.get_formset(None).form
self.assertEqual(form._meta.fields, ['day', 'transport'])
+ def test_lookup_allowed_allows_nonexistent_lookup(self):
+ """
+ Ensure that a lookup_allowed allows a parameter
+ whose field lookup doesn't exist.
+ Refs #21129.
+ """
+ class BandAdmin(ModelAdmin):
+ fields = ['name']
+
+ ma = BandAdmin(Band, self.site)
+ self.assertTrue(ma.lookup_allowed('name__nonexistent', 'test_value'))
+
def test_field_arguments(self):
# If we specify the fields argument, fieldsets_add and fielsets_change should
# just stick the fields into a formsets structure and return it.
Please sign in to comment.
Something went wrong with that request. Please try again.