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")