mirror of
https://github.com/django/django.git
synced 2025-10-30 00:56:09 +00:00
Fixed #6785 -- Made QuerySet.get() fetch a limited number of rows.
Thanks Patryk Zawadzki.
This commit is contained in:
@@ -19,6 +19,10 @@ from django.utils.functional import partition
|
||||
from django.utils import six
|
||||
from django.utils import timezone
|
||||
|
||||
# The maximum number (one less than the max to be precise) of results to fetch
|
||||
# in a get() query
|
||||
MAX_GET_RESULTS = 20
|
||||
|
||||
# The maximum number of items to display in a QuerySet.__repr__
|
||||
REPR_OUTPUT_SIZE = 20
|
||||
|
||||
@@ -297,6 +301,7 @@ class QuerySet(object):
|
||||
clone = self.filter(*args, **kwargs)
|
||||
if self.query.can_filter():
|
||||
clone = clone.order_by()
|
||||
clone = clone[:MAX_GET_RESULTS + 1]
|
||||
num = len(clone)
|
||||
if num == 1:
|
||||
return clone._result_cache[0]
|
||||
@@ -305,8 +310,11 @@ class QuerySet(object):
|
||||
"%s matching query does not exist." %
|
||||
self.model._meta.object_name)
|
||||
raise self.model.MultipleObjectsReturned(
|
||||
"get() returned more than one %s -- it returned %s!" %
|
||||
(self.model._meta.object_name, num))
|
||||
"get() returned more than one %s -- it returned %s!" % (
|
||||
self.model._meta.object_name,
|
||||
num if num <= MAX_GET_RESULTS else 'more than %s' % MAX_GET_RESULTS
|
||||
)
|
||||
)
|
||||
|
||||
def create(self, **kwargs):
|
||||
"""
|
||||
|
||||
Reference in New Issue
Block a user