Alex Stewart
Alex Stewart

Reputation: 748

Time filtering in django model

I wish to perform an operation in the django model where i extract the last 10 minutes of entries and do some data processing on it and return a single value.

I have tried the following code bellow but have not luck. Any help on this would be awesome.

class Data(models.Model):
    time_measured = models.DateTimeField(help_text='Time the data was measured.')
    int_val = models.DecimalField(max_digits=10, decimal_places=2,blank=True)

    def trend(self):
        range_start = self.time_measured.minute - timedelta(minute=10)
        data = Data.objects.filter(time_measured__minute__range=(range_start, self.time_measured.minute))
    return float(data_operation(data.int_val))

Upvotes: 0

Views: 648

Answers (2)

Akshar Raaj
Akshar Raaj

Reputation: 15211

def trend(self):
    range_start = datetime.datetime.now() - timedelta(minutes=10)
    data = Data.objects.filter(time_measured__gte=range_start)

Upvotes: 2

dan-klasson
dan-klasson

Reputation: 14190

I'd try something like:

def trend(self):
    range_start = self.time_measured.minute - timedelta(minute=10)
    data = Data.objects.filter(time_measured__minute__gt=range_start)
return float(data_operation(data))

Upvotes: 1

Related Questions