Refs #26502 -- Added choices to Form.__getitem__() KeyError message.

This commit is contained in:
Tim Graham 2016-04-14 09:10:33 -04:00
parent 5c6d397956
commit 3cb63b0e47
2 changed files with 8 additions and 4 deletions

View File

@ -140,7 +140,12 @@ class BaseForm(object):
field = self.fields[name]
except KeyError:
raise KeyError(
"Key %r not found in '%s'" % (name, self.__class__.__name__))
"Key '%s' not found in '%s'. Choices are: %s." % (
name,
self.__class__.__name__,
', '.join(sorted(f for f in self.fields)),
)
)
if name not in self._bound_fields_cache:
self._bound_fields_cache[name] = field.get_bound_field(self, name)
return self._bound_fields_cache[name]

View File

@ -71,10 +71,9 @@ class FormsTestCase(SimpleTestCase):
'<input type="text" name="birthday" value="1940-10-9" id="id_birthday" />'
)
nonexistenterror = "Key u?'nonexistentfield' not found in 'Person'"
with six.assertRaisesRegex(self, KeyError, nonexistenterror):
msg = "Key 'nonexistentfield' not found in 'Person'. Choices are: birthday, first_name, last_name."
with self.assertRaisesMessage(KeyError, msg):
p['nonexistentfield']
self.fail('Attempts to access non-existent fields should fail.')
form_output = []