2016-05-12 15 views
5

Nella mia applicazione di django, ho una serie di donazioni, su cui voglio fare delle statistiche. Per ogni donazione, una persona è collegata al suo indirizzo email.Gruppo di sequenze Django per e contare le differenze

Voglio calcolare per ogni mese il numero di donatori, ovvero il numero di add-on unici.

Finora ho:

# filter all donations by month 
truncate_date = connection.ops.date_trunc_sql('month', 'date') 
qs = Donation.objects.extra({'month': truncate_date}) 

# group by months and annotate each with the count of emails 
donors = qs.values('month').annotate(count=Count('email')).order_by('month') 

Questo metodo funziona bene, ho un rapporto mensile di tutti i donatori e-mail, ma come ho avuto duplicati in email, non filtra e-mail dai valori unici.

Il database corrente utilizzato è Postgresql.

Come si può fare?

+0

Si sta utilizzando Postgres? – Sayse

+0

Sì, aggiungerò questo nella domanda. – nobe4

risposta

5

Count prende un distinct argument, in modo da poter fare:

donors = qs.values('month').annotate(count=Count('email', distinct=True)).order_by('month') 
Problemi correlati