Let me clarify that I would expect both qs[:1][0] and qs[0] to raise
IndexError if there were no results.


On Thu, May 16, 2013 at 11:05 AM, Lee Trout <[email protected]> wrote:

> That's what I thought- But why not just qs[0]?
>
> Doesn't qs[:1] and qs[0] both cause a LIMIT 1 on the query? It seems that
> the [:1] is unnecessary. I would expect both to raise IndexError.
>
>
>
> On Wed, May 15, 2013 at 11:39 PM, Alex Ogier <[email protected]> wrote:
>
>> Significantly better. The latter method loads every single model in the
>> queryset into Python, potentially the whole database!
>>  On May 15, 2013 9:24 PM, "Lee Trout" <[email protected]> wrote:
>>
>>> Is qs[:1][0] better form than list(qs)[0]?
>>>
>>>
>>> On Wed, May 15, 2013 at 7:48 AM, Selwin Ong <[email protected]>wrote:
>>>
>>>> I've updated the first() and last() to not accept any arguments. Please
>>>> review it and let me know if there's anything else I need to change.
>>>> Hopefully this can get merged in during the sprints and make it into 1.6 
>>>> :).
>>>>
>>>> The pull request is here: https://github.com/django/django/pull/1056
>>>>
>>>> Best,
>>>> Selwin
>>>>
>>>> On Monday, May 13, 2013 8:12:35 PM UTC+7, Michal Petrucha wrote:
>>>>>
>>>>> > > I initially modeled "first()" and "last()"'s behaviors to mimic
>>>>> > > "latest()", but in this new pull request, you can pass multiple
>>>>> field names
>>>>> > > into "first()" and "last()" so it behaves like "order_by()". It's
>>>>> more
>>>>> > > flexible and requires less typing, but I wonder if we should just
>>>>> get rid
>>>>> > > of the optional field arguments and rely on "order_by" for
>>>>> ordering. "There
>>>>> > > should be one-- and preferably only one --obvious way to do it".
>>>>> >
>>>>> > Considering "There should be one-- and preferably only one --obvious
>>>>> way to
>>>>> > do it", I definitely prefer to rely on order_by to do the ordering,
>>>>> not on
>>>>> > first.
>>>>> >
>>>>> > .order_by('name').first()
>>>>> >
>>>>> > is clear and readable in my opinion.
>>>>>
>>>>> My thoughts exactly, we already have one method that does ordering, I
>>>>> don't think it is necessary to make these methods incorporate that
>>>>> functionality. If we did, we might argue that other QuerySet
>>>>> operations could be supported as well and that would just result in a
>>>>> bloated API. Especially if there's no performance gain (the QuerySet
>>>>> would be cloned anyway), and it only saves a few lines of code.
>>>>>
>>>>> Also, skimming through this thread, I think there was a consensus on
>>>>> first() and last() not taking any ordering arguments, i.e. the first
>>>>> proposed syntax:
>>>>>
>>>>>     .filter(last_name__startswith=**'b').order_by('last_name').**first()
>>>>>
>>>>>
>>>>> Michal
>>>>>
>>>>  --
>>>> 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.
>>>>
>>>>
>>>>
>>>
>>>  --
>>> 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.
>>>
>>>
>>>
>>  --
>> 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.
>>
>>
>>
>
>

-- 
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