Sum computed column in Django QuerySet
-
19-09-2019 - |
Question
Given the following Contribution
model:
class Contribution(models.Model):
start_time = models.DateTimeField()
end_time = models.DateTimeField(null=True)
is it possible, using the Django database API, to reproduce the following SQL statement?
SELECT SUM(end_time - start_time) AS total_duration FROM contribution;
I've figured out this much:
Contribution.objects.aggregate(total_duration=models.Sum( ??? ))
but I'm not sure about how to represent the end_time - start_time
part. Thanks!
Solution
Not possible at the moment, there's a ticket for F() objects inside aggregation, but nothing promising.
The only way i see is to workaround by sum in python:
sum([x[1]-x[0] for x in Contribution.objects.values_list('start_time', 'end_time')])
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow