From 00e667728ba3ef1b5cb3de0e11c7648b89315a91 Mon Sep 17 00:00:00 2001 From: Michael Blatherwick Date: Sun, 22 Mar 2015 13:04:53 +0000 Subject: [PATCH] Fixed #23697 -- Improved ForeignObject.get_lookup_constraint() error message. --- django/db/models/fields/related.py | 7 ++++++- tests/queries/tests.py | 9 +++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/django/db/models/fields/related.py b/django/db/models/fields/related.py index 45c9b15081..0ca4e59633 100644 --- a/django/db/models/fields/related.py +++ b/django/db/models/fields/related.py @@ -1766,7 +1766,12 @@ class ForeignObject(RelatedField): root_constraint = constraint_class() assert len(targets) == len(sources) if len(lookups) > 1: - raise exceptions.FieldError('Relation fields do not support nested lookups') + raise exceptions.FieldError( + "Cannot resolve keyword %r into field. Choices are: %s" % ( + lookups[0], + ", ".join(f.name for f in self.model._meta.get_fields()), + ) + ) lookup_type = lookups[0] def get_normalized_value(value): diff --git a/tests/queries/tests.py b/tests/queries/tests.py index 0f86a0f066..9c521c1c03 100644 --- a/tests/queries/tests.py +++ b/tests/queries/tests.py @@ -1164,6 +1164,15 @@ class Queries1Tests(BaseQuerysetTest): ['', '', '', ''] ) + def test_lookup_constraint_fielderror(self): + msg = ( + "Cannot resolve keyword 'unknown_field' into field. Choices are: " + "annotation, category, category_id, children, id, item, " + "managedmodel, name, parent, parent_id" + ) + with self.assertRaisesMessage(FieldError, msg): + Tag.objects.filter(unknown_field__name='generic') + class Queries2Tests(TestCase): @classmethod