#25534: Allow using datetime lookups in QuerySets aggregate calls
-------------------------------------+-------------------------------------
     Reporter:  borfast              |                    Owner:  nobody
         Type:  New feature          |                   Status:  new
    Component:  Database layer       |                  Version:  master
  (models, ORM)                      |
     Severity:  Normal               |               Resolution:
     Keywords:                       |             Triage Stage:  Accepted
    Has patch:  0                    |      Needs documentation:  0
  Needs tests:  0                    |  Patch needs improvement:  0
Easy pickings:  0                    |                    UI/UX:  0
-------------------------------------+-------------------------------------
Changes (by jarshwah):

 * keywords:  QuerySet.extra =>
 * version:  1.7 => master
 * stage:  Unreviewed => Accepted


Comment:

 It's not a duplicate, no, but they are related. #10302 wants
 transform/lookup support in `values()` whereas this ticket is asking for
 support in aggregates/expressions.

 1.9 converts transforms into func expressions, so we'll be able to do
 something like (simplifying the model here..):

 {{{
 from django.db.models.lookups import MonthTransform as Month
 result =
 ElectricityReading.objects.aggregate(total=Count(Month('datetime')))
 }}}

 Which isn't quite as nice as `Count('datetime__month')`. It should be
 possible to convert the latter into the former internally though. I would
 imagine this would be handled internally within `F()`. Detect if we're
 trying to access a transform, extract the transform, wrap the original
 field, and continue as normal. This example (datetime part extraction) is
 probably the canonical usecase for __transform support in aggregates.

 If transforms can be supported with underscore syntax within `F()`
 objects, then that should solve #10302 as well. There are probably a few
 more tickets that could be closed with this implementation.

--
Ticket URL: <https://code.djangoproject.com/ticket/25534#comment:6>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.

-- 
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-updates+unsubscr...@googlegroups.com.
To post to this group, send email to django-updates@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-updates/065.4d371c212660e34626adf351eae86987%40djangoproject.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to