diff options
| author | Artem Rizhov <artem.rizhov@gmail.com> | 2014-10-08 18:27:17 +0300 |
|---|---|---|
| committer | Tim Graham <timograham@gmail.com> | 2014-10-08 14:28:38 -0400 |
| commit | ca61195827efdf6ec54e8280e4cfd9a34f07b8b4 (patch) | |
| tree | 2692b2634d6700923dd9910ac61253478bf0ec72 /django | |
| parent | 9e2e4cb6dda5fa1d4d6b047adbcc215daf4d6ff1 (diff) | |
Fixed #23555 -- Avoided suppressing IndexError in QuerySet.first() and .last()
Diffstat (limited to 'django')
| -rw-r--r-- | django/db/models/query.py | 18 |
1 files changed, 8 insertions, 10 deletions
diff --git a/django/db/models/query.py b/django/db/models/query.py index be5892a371..9371aa14e0 100644 --- a/django/db/models/query.py +++ b/django/db/models/query.py @@ -516,21 +516,19 @@ class QuerySet(object): """ Returns the first object of a query, returns None if no match is found. """ - qs = self if self.ordered else self.order_by('pk') - try: - return qs[0] - except IndexError: - return None + objects = list((self if self.ordered else self.order_by('pk'))[:1]) + if objects: + return objects[0] + return None def last(self): """ Returns the last object of a query, returns None if no match is found. """ - qs = self.reverse() if self.ordered else self.order_by('-pk') - try: - return qs[0] - except IndexError: - return None + objects = list((self.reverse() if self.ordered else self.order_by('-pk'))[:1]) + if objects: + return objects[0] + return None def in_bulk(self, id_list): """ |
