Python Django QuerySet:计算返回的5个变量之间的模型属性趋势

Python Django QuerySet:计算返回的5个变量之间的模型属性趋势,python,django,python-3.x,django-models,django-queryset,Python,Django,Python 3.x,Django Models,Django Queryset,我想弄清楚如何发现返回的对象属性(使用摄氏度)之间的温度“趋势”或“分布” 基本上,我想知道温度是上升了一定量,还是下降了一定量。。。例如:如果在过去5小时内摄氏度上升了2度 我不确定这是否可以通过过滤器来实现,或者我是否必须将每个摄氏度值添加到数组中,并将数组与abs()或类似的值进行比较。您可以通过保存温度与时间周期的日志来实现 假设你有温度记录,你想知道在过去的5个小时里温度是否升高 您可以在现在和5小时前获得温度值 notifications = DeviceNotification.o

我想弄清楚如何发现返回的对象属性(使用摄氏度)之间的温度“趋势”或“分布”

基本上,我想知道温度是上升了一定量,还是下降了一定量。。。例如:
如果在过去5小时内摄氏度上升了2度


我不确定这是否可以通过过滤器来实现,或者我是否必须将每个
摄氏度
值添加到数组中,并将数组与
abs()
或类似的值进行比较。

您可以通过保存温度与时间周期的日志来实现

假设你有温度记录,你想知道在过去的5个小时里温度是否升高

您可以在现在和5小时前获得温度值

notifications = DeviceNotification.objects.all()

    for n in notifications:

        time_period = n.time_period

        logs = DeviceLog.objects.all()[:time_period]

        for l in logs:

            print(l.celsius)
现在,你可以这样做

如果(log_now.celsius-log_past.celsius)>1: 返回“温度升高2摄氏度” 其他: 返回“温度未升高2摄氏度”

按照您的模型操作:

log_now = TemperatureLog.objects.get(created=datetime.datetime.now()-timedelta(minutes=1))

log_past = TemperatureLog.objects.get(created=datetime.datetime.now()-timedelta(hours=5))
我把它改为:

notifications = DeviceNotification.objects.all()

for n in notifications:

    time_period = n.time_period

    logs = DeviceLog.objects.all()[:time_period]

    for l in logs:

        print(l.celsius)

这正是我所做的。每小时记录一次温度。因此,根据所选的时间段,我需要能够看到趋势是什么。我将
get
更改为
filter
,但我得到:
'QuerySet'对象没有属性'celsius'
您能给我看一下您的模型吗?这样我就可以通过实际的字段名来指导您。
logs = DeviceLog.objects.all()          

log_now = logs[datetime.datetime.now()].celsius
log_pre = logs[datetime.datetime.now() - 5].celsius
dif = log_now - log_pre         
if (dif) >=0:
    print ("increased: ",dif,"in 5 hours")
else:
    print ("decreased: ",dif,"in 5 hours")