2017-08-19 1 views
0

J'ai besoin de combiner de nombreux enregistrements acct_id en un seul résumé groupé par le champ "mois". Toutes les autres données comme « valeur » et « cash_in » doivent être Sum()Django Group_by Date avec Sum Data

class Cashflow (models.Model): 
    acct_id = models.ForeignKey (Acct) 
    month = models.DateField (auto_now = False, auto_now_add = False, null = False, blank = True) 
    value = models.IntegerField (blank = True, default = 0) 
    cash_in = models.IntegerField (blank = True, default = 0) 
    cash_out = models.IntegerField (blank = True, default = 0) 
    transfer = models.IntegerField (default = 0) 

J'ai du mal à obtenir toutes les données à un groupe.

J'aimerais également que les mois soient en ordre.

Répondre

0

pas sûr que c'est la meilleure façon de le faire, mais il semble fonctionner.

des conseils sur l'amélioration seraient appréciés. à votre santé.

qs = Cashflow.objects.all() 
    .filter (acct_id = id) 
    .annotate (m = TruncDate ('month')) 
    .order_by ('m') 
    .values ('m') 
    .annotate (**{ 'value': Sum ('value') }) 
    .annotate (**{ 'cash_in': Sum ('cash_in') }) 
    .annotate (**{ 'cash_out': Sum ('cash_out') }) 
    .annotate (**{ 'transfer': Sum ('transfer') })