Commits

Anonymous committed 99ec99a

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.

Comments (0)

Files changed (4)

django/db/models/query.py

         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):
         """

docs/intro/overview.txt

     >>> 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

docs/intro/tutorial01.txt

     >>> 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.

tests/modeltests/basic/tests.py

         # 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,
-            "Article matching query does not exist.",
+            ".*'pub_date__year': 2005.*",
+            Article.objects.get,
+            pub_date__year=2005,
+            pub_date__month=8,
+        )
+        self.assertRaisesRegexp(
+            ObjectDoesNotExist,
+            ".*'pub_date__month': 8.*",
             Article.objects.get,
             pub_date__year=2005,
             pub_date__month=8,
 
         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,
         )