I don't have strong opinions on either of the contentious issues in this
discussion, but I do want to weigh-in and say that I think this is an
important and exciting feature.


On Mon, Jun 9, 2014 at 7:48 PM, Josh Smeaton <josh.smea...@gmail.com> wrote:

> > However, I think having some special case code in filter(), annotate()
> and anything else that takes expressions would be OK
>
> I strongly disagree with this. Expressions are context insensitive at the
> moment, which means they can be used anywhere. If we start externalising
> behaviour based on the context of use, it'll lead us to some very confusing
> code and a tonne of special cases. It would be slightly better if you could
> check the context from the `prepare()` method (are we preparing order_by or
> not), but then I think we'll run into issues where the prepare breaks for
> 3rd party backends - by checking private data. I really do think we'd be
> better off documenting that __neg__ is reserved by Expressions for
> Ordering, and leave it at that.
>
> I'm surprised how easily expressions slotted in to the order_by - I
> thought it'd take a lot more work. Good stuff I think. Some questions:
>
> - should expressions in order_by support random ordering (?) ? I don't
> think so, but I haven't ever had a need for random ordering so I'm not sure.
> - could we reduce the complexity of the order_by machinery by forcing all
> arguments (internally) to be expressions? `order_by('field_a') ->
> order_by(F('field_a'))` etc
>
> These are open questions, not necessarily directed at Tim.
>
> > I haven't yet implemented the LowerCase and related functions
>
> I think we can build out a handy little library of utility functions like
> Lower and Coalesce that could(should) be included directly in django. But
> it'll also open up, to library developers, the ability to easily develop
> backend specific structures, similar to parts of the
> django.contrib.postgres kickstarter.
>
> Cheers
>
> On Tuesday, 10 June 2014 06:31:28 UTC+10, Tim Martin wrote:
>>
>> On Monday, 9 June 2014 21:28:51 UTC+1, Tim Martin wrote:
>>>
>>>
>>> On Monday, 9 June 2014 20:44:08 UTC+1, Tim Martin wrote:
>>>>
>>>>
>>>> I'll go ahead and try to implement this using __neg__() to invert the
>>>> ordering.
>>>>
>>>>
>>> It's still pretty rough, but there's some code in
>>> https://github.com/timmartin/django/tree/order_by_expressions that
>>> appears to work. In particular, I haven't yet implemented the LowerCase and
>>> related functions (I have one, but it's just a test hack), but that should
>>> just be boiler-plate.
>>>
>>>
>> And I should have noted that I haven't implemented detection of negation
>> in contexts other than ORDER BY. It's not easy to do it cleanly with the
>> simple approach I've got at the moment. The code could just check that
>> get_ordering() returns ASC, but a) that's gross and b) it doesn't solve the
>> problem of having unary negative on a subexpression, which would get
>> ignored.
>>
>> Tim
>>
>  --
> 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 django-developers+unsubscr...@googlegroups.com.
> To post to this group, send email to django-developers@googlegroups.com.
> Visit this group at http://groups.google.com/group/django-developers.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/django-developers/3f909f23-00a5-4bec-a21c-1333cec912b9%40googlegroups.com
> <https://groups.google.com/d/msgid/django-developers/3f909f23-00a5-4bec-a21c-1333cec912b9%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
>
> For more options, visit https://groups.google.com/d/optout.
>



-- 
Justin Holmes
Chief Chocobo Breeder, slashRoot

slashRoot: Coffee House and Tech Dojo
New Paltz, NY 12561
845.633.8330

-- 
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 django-developers+unsubscr...@googlegroups.com.
To post to this group, send email to django-developers@googlegroups.com.
Visit this group at http://groups.google.com/group/django-developers.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-developers/CAMGywB5Ksru%2BWh%2BNwu8Zh6WPaYZwTKMZOD4vZOCBu2BO4EgMGQ%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to