Commit d5b93d32 authored by Anssi Kääriäinen's avatar Anssi Kääriäinen
Browse files

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
parent a901654a
Loading
Loading
Loading
Loading
+8 −4
Original line number Diff line number Diff line
@@ -363,10 +363,14 @@ class QuerySet(object):
        if num == 1:
            return clone._result_cache[0]
        if not num:
            raise self.model.DoesNotExist("%s matching query does not exist."
                    % self.model._meta.object_name)
        raise self.model.MultipleObjectsReturned("get() returned more than one %s -- it returned %s! Lookup parameters were %s"
                % (self.model._meta.object_name, num, kwargs))
            raise self.model.DoesNotExist(
                "%s matching query does not exist. "
                "Lookup parameters were %s" %
                (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):
        """
+1 −1
Original line number Diff line number Diff line
@@ -93,7 +93,7 @@ access your data. The API is created on the fly, no code generation necessary::
    >>> Reporter.objects.get(id=2)
    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.
    >>> from datetime import datetime
+1 −1
Original line number Diff line number Diff line
@@ -664,7 +664,7 @@ Save these changes and start a new Python interactive shell by running
    >>> Poll.objects.get(id=2)
    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
    # shortcut for primary-key exact lookups.
+14 −4
Original line number Diff line number Diff line
@@ -83,14 +83,23 @@ class ModelTest(TestCase):
        # parameters don't match any object.
        self.assertRaisesRegexp(
            ObjectDoesNotExist,
            "Article matching query does not exist.",
            "Article matching query does not exist. Lookup parameters were "
            "{'id__exact': 2000}",
            Article.objects.get,
            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(
            ObjectDoesNotExist,
            "Article matching query does not exist.",
            ".*'pub_date__month': 8.*",
            Article.objects.get,
            pub_date__year=2005,
            pub_date__month=8,
@@ -98,7 +107,8 @@ class ModelTest(TestCase):

        self.assertRaisesRegexp(
            ObjectDoesNotExist,
            "Article matching query does not exist.",
            "Article matching query does not exist. Lookup parameters were "
            "{'pub_date__week_day': 6}",
            Article.objects.get,
            pub_date__week_day=6,
        )