Loading django/db/models/query.py +4 −6 Original line number Diff line number Diff line Loading @@ -388,13 +388,11 @@ class QuerySet(object): return clone._result_cache[0] if not num: raise self.model.DoesNotExist( "%s matching query does not exist. " "Lookup parameters were %s" % (self.model._meta.object_name, kwargs)) "%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)) "get() returned more than one %s -- it returned %s!" % (self.model._meta.object_name, num)) def create(self, **kwargs): """ Loading tests/basic/models.py +8 −0 Original line number Diff line number Diff line Loading @@ -18,3 +18,11 @@ class Article(models.Model): def __str__(self): return self.headline @python_2_unicode_compatible class SelfRef(models.Model): selfref = models.ForeignKey('self', null=True, blank=True, related_name='+') def __str__(self): return SelfRef.objects.get(selfref=self).pk tests/basic/tests.py +10 −14 Original line number Diff line number Diff line Loading @@ -11,7 +11,7 @@ from django.test import TestCase, TransactionTestCase, skipIfDBFeature, skipUnle from django.utils import six from django.utils.translation import ugettext_lazy from .models import Article from .models import Article, SelfRef class ModelTest(TestCase): Loading Loading @@ -87,23 +87,14 @@ class ModelTest(TestCase): # parameters don't match any object. six.assertRaisesRegex(self, ObjectDoesNotExist, "Article matching query does not exist. Lookup parameters were " "{'id__exact': 2000}", "Article matching query does not exist.", Article.objects.get, id__exact=2000, ) # To avoid dict-ordering related errors check only one lookup # in single assert. six.assertRaisesRegex(self, ObjectDoesNotExist, ".*'pub_date__year': 2005.*", Article.objects.get, pub_date__year=2005, pub_date__month=8, ) six.assertRaisesRegex(self, self.assertRaises( ObjectDoesNotExist, ".*'pub_date__month': 8.*", Article.objects.get, pub_date__year=2005, pub_date__month=8, Loading @@ -111,8 +102,7 @@ class ModelTest(TestCase): six.assertRaisesRegex(self, ObjectDoesNotExist, "Article matching query does not exist. Lookup parameters were " "{'pub_date__week_day': 6}", "Article matching query does not exist.", Article.objects.get, pub_date__week_day=6, ) Loading Loading @@ -689,6 +679,12 @@ class ModelTest(TestCase): with self.assertNumQueries(0): self.assertEqual(len(Article.objects.none().distinct('headline', 'pub_date')), 0) def test_ticket_20278(self): sr = SelfRef.objects.create() with self.assertRaises(ObjectDoesNotExist): SelfRef.objects.get(selfref=sr) class ConcurrentSaveTests(TransactionTestCase): @skipUnlessDBFeature('test_db_allows_multiple_connections') def test_concurrent_delete_with_save(self): Loading Loading
django/db/models/query.py +4 −6 Original line number Diff line number Diff line Loading @@ -388,13 +388,11 @@ class QuerySet(object): return clone._result_cache[0] if not num: raise self.model.DoesNotExist( "%s matching query does not exist. " "Lookup parameters were %s" % (self.model._meta.object_name, kwargs)) "%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)) "get() returned more than one %s -- it returned %s!" % (self.model._meta.object_name, num)) def create(self, **kwargs): """ Loading
tests/basic/models.py +8 −0 Original line number Diff line number Diff line Loading @@ -18,3 +18,11 @@ class Article(models.Model): def __str__(self): return self.headline @python_2_unicode_compatible class SelfRef(models.Model): selfref = models.ForeignKey('self', null=True, blank=True, related_name='+') def __str__(self): return SelfRef.objects.get(selfref=self).pk
tests/basic/tests.py +10 −14 Original line number Diff line number Diff line Loading @@ -11,7 +11,7 @@ from django.test import TestCase, TransactionTestCase, skipIfDBFeature, skipUnle from django.utils import six from django.utils.translation import ugettext_lazy from .models import Article from .models import Article, SelfRef class ModelTest(TestCase): Loading Loading @@ -87,23 +87,14 @@ class ModelTest(TestCase): # parameters don't match any object. six.assertRaisesRegex(self, ObjectDoesNotExist, "Article matching query does not exist. Lookup parameters were " "{'id__exact': 2000}", "Article matching query does not exist.", Article.objects.get, id__exact=2000, ) # To avoid dict-ordering related errors check only one lookup # in single assert. six.assertRaisesRegex(self, ObjectDoesNotExist, ".*'pub_date__year': 2005.*", Article.objects.get, pub_date__year=2005, pub_date__month=8, ) six.assertRaisesRegex(self, self.assertRaises( ObjectDoesNotExist, ".*'pub_date__month': 8.*", Article.objects.get, pub_date__year=2005, pub_date__month=8, Loading @@ -111,8 +102,7 @@ class ModelTest(TestCase): six.assertRaisesRegex(self, ObjectDoesNotExist, "Article matching query does not exist. Lookup parameters were " "{'pub_date__week_day': 6}", "Article matching query does not exist.", Article.objects.get, pub_date__week_day=6, ) Loading Loading @@ -689,6 +679,12 @@ class ModelTest(TestCase): with self.assertNumQueries(0): self.assertEqual(len(Article.objects.none().distinct('headline', 'pub_date')), 0) def test_ticket_20278(self): sr = SelfRef.objects.create() with self.assertRaises(ObjectDoesNotExist): SelfRef.objects.get(selfref=sr) class ConcurrentSaveTests(TransactionTestCase): @skipUnlessDBFeature('test_db_allows_multiple_connections') def test_concurrent_delete_with_save(self): Loading