'Returns the first object of a query, returns None if no match is found.'

def first(self):

    qs = (self if self.ordered else self.order_by('pk'))
    try:
        return qs[0]
    except IndexError:
        return None
