summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMalcolm Tredinnick <malcolm.tredinnick@gmail.com>2007-02-10 03:39:56 +0000
committerMalcolm Tredinnick <malcolm.tredinnick@gmail.com>2007-02-10 03:39:56 +0000
commite57ce6b15714c3697bec8a911443aca6cf1172d2 (patch)
tree4ec22e2a3788e855966b824e52f3866a9b485855
parentf0a3f5fc1a90e99ad8c315f057bc5bd49cc31306 (diff)
Fixed #2348 -- Improved error reporting when query filter arguments are
misspelt. Variation on a patch from Karen Tracey. git-svn-id: http://code.djangoproject.com/svn/django/trunk@4470 bcc190cf-cafb-0310-a4f2-bffc1f526a37
-rw-r--r--django/db/models/query.py10
-rw-r--r--tests/modeltests/lookup/models.py11
2 files changed, 19 insertions, 2 deletions
diff --git a/django/db/models/query.py b/django/db/models/query.py
index 51fa334e63..2ddcd449cf 100644
--- a/django/db/models/query.py
+++ b/django/db/models/query.py
@@ -881,8 +881,14 @@ def lookup_inner(path, lookup_type, value, opts, table, column):
new_opts = field.rel.to._meta
new_column = new_opts.pk.column
join_column = field.column
-
- raise FieldFound
+ raise FieldFound
+ elif path:
+ # For regular fields, if there are still items on the path,
+ # an error has been made. We munge "name" so that the error
+ # properly identifies the cause of the problem.
+ name += LOOKUP_SEPARATOR + path[0]
+ else:
+ raise FieldFound
except FieldFound: # Match found, loop has been shortcut.
pass
diff --git a/tests/modeltests/lookup/models.py b/tests/modeltests/lookup/models.py
index aa903d1a64..8468d396f7 100644
--- a/tests/modeltests/lookup/models.py
+++ b/tests/modeltests/lookup/models.py
@@ -206,4 +206,15 @@ DoesNotExist: Article matching query does not exist.
>>> Article.objects.exclude(id__in=[])
[<Article: Article with \ backslash>, <Article: Article% with percent sign>, <Article: Article_ with underscore>, <Article: Article 5>, <Article: Article 6>, <Article: Article 4>, <Article: Article 2>, <Article: Article 3>, <Article: Article 7>, <Article: Article 1>]
+# Programming errors are pointed out with nice error messages
+>>> Article.objects.filter(pub_date_year='2005').count()
+Traceback (most recent call last):
+ ...
+TypeError: Cannot resolve keyword 'pub_date_year' into field
+
+>>> Article.objects.filter(headline__starts='Article')
+Traceback (most recent call last):
+ ...
+TypeError: Cannot resolve keyword 'headline__starts' into field
+
"""}