Skip to main content
 首页 » 编程设计

python之如何使用 DatetimeField 列在过去 7 天的 Django 中获取每小时的最后一个对象

2024年08月15日36langtianya

我一直在执行从名为“Feeds”的表中过滤值的任务,

该行每 10 分钟插入一次系统。 IE。每小时 6 行我将其日期时间存储在名为时间戳的列中。

我想过滤过去 7 天每个这样的小时的最后一行。

这是我的代码。

class Feeds(models.Model): 
    value = models.FloatField() 
    timestamp = models.DateTimeField(auto_now_add=True)` 

请帮助解决这个问题。 谢谢。

请您参考如下方法:

获取最近7天的对象,然后获取每个小时的对象,找出日期时间值最大的对象,排除其他对象。

d = datetime.now() - timedelta(days=7) 
feeds = Feeds.objects.filter(timestamp__gte=d) 
d = d.replace(minute=0, second=0, microsecond=0) 
while d <= datetime.now(): 
    temp = feeds.filter(timestamp__range=(d, d + timedelta(hours=1))) 
    if temp: 
        temp = temp.exclude(timestamp=temp.all().order_by('-timestamp')[0].timestamp) 
        for t in temp: 
            feeds = feeds.exclude(timestamp=t.timestamp)             
    d += timedelta(hours=1)