On 02/27/2013 05:34 PM, Wim Feijen wrote:
Hi all,

We struggled to get a proper definition for a first() and last() method vs. earliest() and latest() . I'd like to make one proposal. After that, I really like your opinion on which syntax you prefer.

First, let me give you a lenghty introduction. We discussed several use cases on this mailing list <https://groups.google.com/forum/?fromgroups=#%21searchin/django-developers/get_default/django-developers/3RwDxWKPZ_A/mPtAlQ2b0DwJ>. Then, I realized that:

.filter(last_name__startswith='b').order_by('last_name').first()
is an acceptable compromise for me to use in stead of:
.first(last_name__startswith='b').order_by('last_name')

Last weekend Aymeric explained to me that earliest can actually accomplish the same:
.filter(last_name__startswith='b').earliest('last_name')

Then, I find "earliest" an inappropriate name, because it does not describe functioning well.

Therefore, my proposal is, if we are going to implement the earliest and latest method, we should definitely rename them to: first and latest.

After that, there is only one question left:

Which style do you prefer?

.filter(last_name__startswith='b').order_by('last_name').first() # clear and long .first(last_name__startswith='b').order_by('last_name') # first method has filter syntax. .filter(last_name__startswith='b').first('last_name') # first method has order_by syntax.

So, what do you think?

Best regards,

Wim



How about first as a function? I think it's very often useful not just for querysets but
for all kind of iterables:

def first(iterable, default=None):
    try:
        return next(iter(iterable))
    except StopIteration:
        return default

 -ak

--
You received this message because you are subscribed to the Google Groups "Django 
developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/django-developers?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to