From ffc649df888ea35d0e6848bf53ee26917fccc27e Mon Sep 17 00:00:00 2001 From: Tim Graham Date: Fri, 2 Nov 2012 06:54:00 -0400 Subject: [1.5.X] Fixed #15361 - Documented performance considerations for QuerySet.get() Thanks mmcnickle for the patch. Backport of feaf9f279a from master --- tests/modeltests/basic/tests.py | 36 +++++++++++++++++++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) (limited to 'tests/modeltests/basic/tests.py') diff --git a/tests/modeltests/basic/tests.py b/tests/modeltests/basic/tests.py index ebd70d14d9..1c83b980a7 100644 --- a/tests/modeltests/basic/tests.py +++ b/tests/modeltests/basic/tests.py @@ -2,7 +2,7 @@ from __future__ import absolute_import, unicode_literals from datetime import datetime -from django.core.exceptions import ObjectDoesNotExist +from django.core.exceptions import ObjectDoesNotExist, MultipleObjectsReturned from django.db.models.fields import Field, FieldDoesNotExist from django.test import TestCase, skipIfDBFeature, skipUnlessDBFeature from django.utils import six @@ -128,6 +128,40 @@ class ModelTest(TestCase): b = Article.objects.get(pk=a.id) self.assertEqual(a, b) + # Create a very similar object + a = Article( + id=None, + headline='Area man programs in Python', + pub_date=datetime(2005, 7, 28), + ) + a.save() + + self.assertEqual(Article.objects.count(), 2) + + # Django raises an Article.MultipleObjectsReturned exception if the + # lookup matches more than one object + self.assertRaisesRegexp( + MultipleObjectsReturned, + "get\(\) returned more than one Article -- it returned 2!", + Article.objects.get, + headline__startswith='Area', + ) + + self.assertRaisesRegexp( + MultipleObjectsReturned, + "get\(\) returned more than one Article -- it returned 2!", + Article.objects.get, + pub_date__year=2005, + ) + + self.assertRaisesRegexp( + MultipleObjectsReturned, + "get\(\) returned more than one Article -- it returned 2!", + Article.objects.get, + pub_date__year=2005, + pub_date__month=7, + ) + def test_object_creation(self): # Create an Article. a = Article( -- cgit v1.3