2010-05-19 12 views
5

Je travaille sur une application de feuille de temps Django et je n'arrive pas à comprendre comment inclure des sommes agrégées égales à zéro. Si je fais quelque chose comme:Django inclut des sommes agrégées nulles

entries = TimeEntry.objects.all().values("user__username").annotate(Sum("hours")) 

Je reçois tous les utilisateurs qui ont des entrées de temps et leurs sommes.

[{'username': u'bob' 'hours__sum':49}, {'username': u'jane' 'hours__sum':10}] 

Quand je filtre un jour donné:

filtered_entries = entries.filter(date="2010-05-17") 

Toute personne qui n'a pas entrer dans le temps pour cette journée est exclue. Est-il possible d'inclure ces utilisateurs dont les sommes sont 0?

Merci

Répondre

0

Peut-être que vous pourriez essayer la relation dans l'autre sens - commencer par les utilisateurs, et un lien vers les entrées:

User.objects.all().values("username").annotate(Sum("timeentry__hours")) 

Est-ce que le travail?

+0

Désolé, pas de dés avec ça non plus. Merci pour la suggestion cependant. Ce qui précède me donne ce que je cherche mais pour tous les jours. Dès que je mets le filtre dans toute la somme nulle, les gens sont supprimés. J'ai essayé le filtre après l'annotate() et avant. – tomas