faire la somme d'un champ par mois

a marqué ce sujet comme résolu.

Salut, je bosse sur un ptit projet django, et je commence à fumer sur certaines requêtes…

J’utilise django 1.10 en python3, et sqlite3.

Avec un modèle comme celui là :

1
2
3
4
5
class Appel(models.Model):
    debut_appel = models.DateTimeField(verbose_name="Debut de l'appel", default=timezone.now, editable=True, null = True, blank=True)
    fin_appel = models.DateTimeField(verbose_name="Fin de l'appel", default=timezone.now, null = True, blank=True)
    duree_appel_calculee = models.BigIntegerField(verbose_name="Durée de l'appel calculée en secondes", null = True, blank=True, editable=False)
    personne = models.ForeignKey(Personne, related_name="appels", verbose_name="Personne")

duree_appel_calculee est calculé et enregistré à l’enregistrement du formulaire.

J’aimerai donc faire une requête qui me permette d’avoir la somme de duree_appel_calculee par mois pour une personne. Un truc du genre :

  • 2016-12 | 143
  • 2017-02 | 61
  • 2017-03 | 59
  • 2017-05 | …

Donc jusque maintenant, j’ai filtré par personne, et j’ai un champ calculé ’da’ tronqué sur le mois.

1
Appel.objects.filter(personne=1).annotate(da=TruncMonth('debut_appel')).values('da', 'duree_appel_calculee')

<QuerySet [{’da’: datetime.datetime(2017, 2, 1, 0, 0, tzinfo=<UTC>), ’duree_appel_calculee’: 61}, {’da’: datetime.datetime(2017, 3, 1, 0, 0, tzinfo=<UTC>), ’duree_appel_calculee’: 1}, {’da’: datetime.datetime(2017, 3, 1, 0, 0, tzinfo=<UTC>), ’duree_appel_calculee’: 58}]>

Maintenant, vu que je ne peux utiliser l’agréation sur le champ ’da’ (sqlite ne le gère pas), j’aimerai le convertir en chaine avec DateTime.strftime("%Y-%m") mais… je coince…

Merci d’avance pour votre aide

+0 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte