Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

[1.6.x] Fixed #21129 -- Prevented admin filter params modifications f…

…rom throwing an exception.

Thanks Tuttle for the report.

Backport of 5381317 from master
  • Loading branch information...
commit e5b0f5b95d49c33f5431cf4060705b5e59ec69d4 1 parent 4290cc1
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
4 django/contrib/admin/options.py
View
@@ -306,6 +306,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):
12 tests/modeladmin/tests.py
View
@@ -88,6 +88,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.