2017-10-19 16 views
0

Comment puis-je calculer arrêts par heure par la route et la date modèle:Comment calculer les événements par heure par la route et daterange

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

Ma requête:

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

qui me donne:

<<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}]>> 

Je suis en train de me quereller avec la façon de calculer les arrêts/heure pour chaque route et en passant cela à la vue (par ex. itinéraire 226 arrêts/heure = 15.18. Suggestions? Merci.

Répondre

0

Voici comment je l'ai finalement résolu. Serait intéressé par des suggestions d'amélioration.

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 

Essayez gère à la fois le type et la division par zéro problèmes.