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 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
{'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
Code : Sélectionner tout - Visualiser dans une fenêtre à part
{'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
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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