views:

255

answers:

1

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!

+1  A: 

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')])
Dmitry Shevchenko