Kaydet (Commit) d5b93d32 authored tarafından Anssi Kääriäinen's avatar Anssi Kääriäinen

Fixed #10494 -- Added kwargs to QuerySet.get() error message in the case no objects were found.

Thanks brondsem for the report, Szymon Pyzalski for the patch and oinopion for review.


git-svn-id: http://code.djangoproject.com/svn/django/trunk@17917 bcc190cf-cafb-0310-a4f2-bffc1f526a37
üst a901654a
...@@ -363,10 +363,14 @@ class QuerySet(object): ...@@ -363,10 +363,14 @@ class QuerySet(object):
if num == 1: if num == 1:
return clone._result_cache[0] return clone._result_cache[0]
if not num: if not num:
raise self.model.DoesNotExist("%s matching query does not exist." raise self.model.DoesNotExist(
% self.model._meta.object_name) "%s matching query does not exist. "
raise self.model.MultipleObjectsReturned("get() returned more than one %s -- it returned %s! Lookup parameters were %s" "Lookup parameters were %s" %
% (self.model._meta.object_name, num, kwargs)) (self.model._meta.object_name, kwargs))
raise self.model.MultipleObjectsReturned(
"get() returned more than one %s -- it returned %s! "
"Lookup parameters were %s" %
(self.model._meta.object_name, num, kwargs))
def create(self, **kwargs): def create(self, **kwargs):
""" """
......
...@@ -93,7 +93,7 @@ access your data. The API is created on the fly, no code generation necessary:: ...@@ -93,7 +93,7 @@ access your data. The API is created on the fly, no code generation necessary::
>>> Reporter.objects.get(id=2) >>> Reporter.objects.get(id=2)
Traceback (most recent call last): Traceback (most recent call last):
... ...
DoesNotExist: Reporter matching query does not exist. DoesNotExist: Reporter matching query does not exist. Lookup parameters were {'id': 2}
# Create an article. # Create an article.
>>> from datetime import datetime >>> from datetime import datetime
......
...@@ -664,7 +664,7 @@ Save these changes and start a new Python interactive shell by running ...@@ -664,7 +664,7 @@ Save these changes and start a new Python interactive shell by running
>>> Poll.objects.get(id=2) >>> Poll.objects.get(id=2)
Traceback (most recent call last): Traceback (most recent call last):
... ...
DoesNotExist: Poll matching query does not exist. DoesNotExist: Poll matching query does not exist. Lookup parameters were {'id': 2}
# Lookup by a primary key is the most common case, so Django provides a # Lookup by a primary key is the most common case, so Django provides a
# shortcut for primary-key exact lookups. # shortcut for primary-key exact lookups.
......
...@@ -83,14 +83,23 @@ class ModelTest(TestCase): ...@@ -83,14 +83,23 @@ class ModelTest(TestCase):
# parameters don't match any object. # parameters don't match any object.
self.assertRaisesRegexp( self.assertRaisesRegexp(
ObjectDoesNotExist, ObjectDoesNotExist,
"Article matching query does not exist.", "Article matching query does not exist. Lookup parameters were "
"{'id__exact': 2000}",
Article.objects.get, Article.objects.get,
id__exact=2000, id__exact=2000,
) )
# To avoid dict-ordering related errors check only one lookup
# in single assert.
self.assertRaisesRegexp(
ObjectDoesNotExist,
".*'pub_date__year': 2005.*",
Article.objects.get,
pub_date__year=2005,
pub_date__month=8,
)
self.assertRaisesRegexp( self.assertRaisesRegexp(
ObjectDoesNotExist, ObjectDoesNotExist,
"Article matching query does not exist.", ".*'pub_date__month': 8.*",
Article.objects.get, Article.objects.get,
pub_date__year=2005, pub_date__year=2005,
pub_date__month=8, pub_date__month=8,
...@@ -98,7 +107,8 @@ class ModelTest(TestCase): ...@@ -98,7 +107,8 @@ class ModelTest(TestCase):
self.assertRaisesRegexp( self.assertRaisesRegexp(
ObjectDoesNotExist, ObjectDoesNotExist,
"Article matching query does not exist.", "Article matching query does not exist. Lookup parameters were "
"{'pub_date__week_day': 6}",
Article.objects.get, Article.objects.get,
pub_date__week_day=6, pub_date__week_day=6,
) )
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment