2017-10-19 76 views
0

计算每小时事件我如何通过的路线和日期计算,每小时停止 型号:如何通过的路线和日期范围

MyModel(models.Model): 
    route = models.Integer(... 
    on_route_time = models.TimeField(... 
    dropoff_stops = models.Integer(... 
    pickup_stops = models.Integer(... 
    date = models.DateTime(... 

我的查询:

def stops_per_hour(date): query_set = MyModel.objects.filter(date=date).values( 'route', 'dropoff_stops','pickup_stops','on_route_time').annotate( total=(Sum('actual_stops') + Sum('pickup_stops'))).order_by('route')

这给了我:

<<QuerySet [{'route': 226, 'dropoff_stops': 84, 'pickup_stops': 0, 'on_route_time': datetime.time(5, 23), 'total': 84},{'route': 242, 'dropoff_stops': 33, 'pickup_stops': 0, 'on_route_time': datetime.time(3, 24), 'total': 33}]>> 

我忙于计算停止/小时,并将其传递给视图(例如,路线226站/小时= 15.18。建议?谢谢。

回答

0

以下是我终于解决它的方法。会对改进建议感兴趣。

new_set = [] 
for i in query_set: 
    time = i.get('on_route_time') 
    stops = i.get('dropoff_stops') + i.get('pickup_stops) 
    route = i.get('route') 

    try: 
     time.hour * 60 + time.minute > 0 
     sph = round(stops/(time.hour * 60 + time.minute) * 60, 1) 
     dict = {'route':route, 'sph', sph} 
     new_set.append(dict) 
    except: 
     sph = 0 
     new_set.append(dict) 
return new_set 

尝试处理类型和除以零问题。