Hi Selwin,
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.
Wim
On Sunday, 12 May 2013 06:55:04 UTC+2, Selwin Ong wrote:
>
> Hi everyone,
>
> I opened a new pull request implementing Shai's suggestions (I didn't
> overwrite the current branch so we can still compare the two
> implementations if needed).
>
> 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".
>
> Thoughts?
>
> The new pull request is here: https://github.com/django/django/pull/1056
>
> Best,
> Selwin
>
> On Sunday, May 12, 2013 4:23:33 AM UTC+7, Shai Berger wrote:
>>
>> Hi Selwin,
>>
>> On Saturday 11 May 2013, Selwin Ong wrote:
>> > Hi everyone,
>> >
>> > I submitted a pull request implementing "first()" and "last()" here:
>> > https://github.com/django/django/pull/1054
>> >
>> > Comments welcome!
>> >
>> You implemented the "order_by" parameter as taking only one field name;
>> this is
>> inconsistent with the way ordering is done elsewhere -- both the
>> queryset
>> order_by() method, and the model meta ordering option, take a list of
>> field
>> names, each optionally prefixed by "-".
>>
>> While I can see reason in going for a simpler implementation, I think it
>> is
>> much preferable to have a consistent API; and even if the simpler
>> implementation is preferred, you should take care of a more friendly
>> error
>> message for someone who would call qset.first("a","b") or even
>> qset.last("-a")
>> [the latter may seem to make no sense -- "if that's what you want, call
>> qset.first('a')" -- but may reasonably arise in situations where the
>> ordering
>> field is received as an argument].
>>
>> Shai.
>>
>
--
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.