[1.7.x] Fixed #23451 -- Fixed typo in inlineformset_factory() error message.

Backport of f7eee04ebe from master
This commit is contained in:
Petras Zdanavičius 2014-09-08 22:54:57 +03:00 committed by Tim Graham
parent 1f1a329288
commit a3e9e9e6c6
3 changed files with 10 additions and 1 deletions

View File

@ -950,7 +950,7 @@ def _get_foreign_key(parent_model, model, fk_name=None, can_fail=False):
(fk.rel.to != parent_model and (fk.rel.to != parent_model and
fk.rel.to not in parent_model._meta.get_parent_list()): fk.rel.to not in parent_model._meta.get_parent_list()):
raise ValueError( raise ValueError(
"fk_name '%s' is not a ForeignKey to '%s.%'." "fk_name '%s' is not a ForeignKey to '%s.%s'."
% (fk_name, parent_model._meta.app_label, parent_model._meta.object_name)) % (fk_name, parent_model._meta.app_label, parent_model._meta.object_name))
elif len(fks_to_parent) == 0: elif len(fks_to_parent) == 0:
raise ValueError( raise ValueError(

View File

@ -23,3 +23,6 @@ Bugfixes
* The ``@deconstructible`` decorator now fails with a ``ValueError`` if the * The ``@deconstructible`` decorator now fails with a ``ValueError`` if the
decorated object cannot automatically be imported (:ticket:`23418`). decorated object cannot automatically be imported (:ticket:`23418`).
* Fixed a typo in an ``inlineformset_factory()`` error message that caused a
crash (:ticket:`23451`).

View File

@ -805,6 +805,12 @@ class ModelFormsetTest(TestCase):
formset = AuthorBooksFormSet(data, instance=author, queryset=custom_qs) formset = AuthorBooksFormSet(data, instance=author, queryset=custom_qs)
self.assertTrue(formset.is_valid()) self.assertTrue(formset.is_valid())
def test_inline_formsets_with_wrong_fk_name(self):
""" Regression for #23451 """
message = "fk_name 'title' is not a ForeignKey to 'model_formsets.Author'."
with self.assertRaisesMessage(ValueError, message):
inlineformset_factory(Author, Book, fields="__all__", fk_name='title')
def test_custom_pk(self): def test_custom_pk(self):
# We need to ensure that it is displayed # We need to ensure that it is displayed