Bonjour,
je cherche à organiser les données issue d'une requête DB dans un dictionnaire pour pouvoir les afficher facilement dans un template django. C'est toujours les données de titi qui s'affiche pour toto dans le dictionnaire decrecapitulatif.
Je me considère comme débutant en python. Mes lacunes jouent contre moi 
Ça fait deux jours que je m'arrache les cheveux. je n'arrive pas à obtenir ce que je veux.
Si vous avez un peu de temps pour me donner un petit coup de main se serait super sympa. N'hésitez pas à apporter de la critique à mon code ça me permettra de progresser 
Je vous remercie d'avance.
Voici ce que je souhaite :
{'toto': {'totaldays': 3, 'prestation': [{datetime.date(2016, 5, 8): '2:00:00'}, {datetime.date(2016, 5, 15): '1:00:00'}, {datetime.date(2016, 5, 29): '0:30:00'}]}, 'titi':{'totaldays': 5, 'prestation': [{datetime.date(2016, 5, 8): '1:30:00'}, {datetime.date(2016, 5, 9): '1:00:00'}, {datetime.date(2016, 5, 10): '2:00:00'}, {datetime.date(2016, 5, 14): '1:00:00'}, {datetime.date(2016, 5, 15): '1:30:00'}]}}
Voici ce que j'obtiens
{'toto': {'ttdays': 3, 'prestation': [{datetime.date(2016, 5, 8): '2:00:00'}, {datetime.date(2016, 5, 15): '1:00:00'}, {datetime.date(2016, 5, 29): '0:30:00'}]}, 'titi': {'ttdays': 3, 'prestation': [{datetime.date(2016, 5, 8): '2:00:00'}, {datetime.date(2016, 5, 15): '1:00:00'}, {datetime.date(2016, 5, 29): '0:30:00'}]}}
Voici mon code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| events = employePrestation.objects.all().order_by('personne', 'date_prestation')
#declaration des dictionnaires
prestaparjour={}
dicrecapitulatif={}
dicprestations = {}
if events:
#mise a zero du decompte de nombre de jours travaille par enfant
a = 0
#initialisation de la variable designant l enfant a traiter
personne = ""
#Si la requete google contient des evenements alors lancer le traitement
for event in events:
#Si on traite un nouvel enfant on remet les variables a 0
prestaparjour = {}
if personne != event.personne:
totaldurationevent = datetime.timedelta()
#remise à zero du nombre de jours
a=0
#On vide le dictionnaire contenant la liste des prestations
dicprestations.clear()
a +=1
personne = event.personne
prestaparjour[event.date_prestation] = event.duree_prestation
if 'prestation' in dicprestations:
dicprestations['prestation'].append(prestaparjour)
else:
dicprestations['prestation']=[prestaparjour]
dicrecapitulatif[personne] = dicprestations
dicrecapitulatif[personne]['ttdays'] = a |
Partager