Estoy tratando de encontrar la duración acumulada de algunos eventos, los campos 'inicio' y 'final' son ambos campos django.db.models.DateTimeField
.Cómo agregar un campo calculado con django ORM? (sin SQL en bruto)
Lo que me gustaría hacer debería haberse escrito así:
from django.db.models import F, Sum
from my.models import Event
Event.objects.aggregate(anything=Sum(F('start') - F('end')))
# this first example return:
# AttributeError: 'ExpressionNode' object has no attribute 'split'
# Ok I'll try more SQLish:
Event.objects.extra(select={
'extra_field': 'start - end'
}).aggregate(Sum('extra_field'))
# this time:
# FieldError: Cannot resolve keyword 'extra_field' into field.
no puedo agreggate (Suma) empieza y termina por separado y luego restar en Python PORQUE DB no puede Suma objetos DateTime.
¿Una buena forma de hacerlo sin sql sin formato?
Tu Delorean parece funcionar muy bien ;-). Pero, de hecho, si mi proyecto aún existe, no puedo construir la suma en SQL ya que compongo toneladas de sumas (domingos, días festivos, horas de la noche, horas del día ...) – christophe31