diff options
| author | Selwin Ong <selwin.ong@gmail.com> | 2013-05-21 18:35:12 +0300 |
|---|---|---|
| committer | Anssi Kääriäinen <akaariai@gmail.com> | 2013-05-21 18:52:28 +0300 |
| commit | ea9a0857d4922fab1f9146f3a7828b67281edc89 (patch) | |
| tree | 0e4b9751c8731a839f1dfeb06f6d63dc25b05eda /django | |
| parent | d595b61acae91e6111ec26cb0a4a1b1a9f4eb0d5 (diff) | |
Fixed #19326 -- Added first() and last() methods to QuerySet
Diffstat (limited to 'django')
| -rw-r--r-- | django/db/models/manager.py | 6 | ||||
| -rw-r--r-- | django/db/models/query.py | 20 |
2 files changed, 26 insertions, 0 deletions
diff --git a/django/db/models/manager.py b/django/db/models/manager.py index 43a8264f11..a1aa79f809 100644 --- a/django/db/models/manager.py +++ b/django/db/models/manager.py @@ -186,6 +186,12 @@ class Manager(six.with_metaclass(RenameManagerMethods)): def latest(self, *args, **kwargs): return self.get_queryset().latest(*args, **kwargs) + def first(self): + return self.get_queryset().first() + + def last(self): + return self.get_queryset().last() + def order_by(self, *args, **kwargs): return self.get_queryset().order_by(*args, **kwargs) diff --git a/django/db/models/query.py b/django/db/models/query.py index 4313d044ee..f2015f57a8 100644 --- a/django/db/models/query.py +++ b/django/db/models/query.py @@ -498,6 +498,26 @@ class QuerySet(object): def latest(self, field_name=None): return self._earliest_or_latest(field_name=field_name, direction="-") + def first(self): + """ + 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 + + 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 + def in_bulk(self, id_list): """ Returns a dictionary mapping each of the given IDs to the object with |
