2016-05-12 11 views
5

私のdjangoアプリケーションでは、統計を作成するための寄付があります。寄付ごとに、人は自分のメールアドレスにリンクされています。Django querysetグループbyおよび個数count

私は毎月、ドナーの数、すなわちユニークな電子メールアドレスの数を計算したいと思います。

これまでのところ、私が持っている:

# 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') 

これはうまく動作しますが、私はすべての電子メールのドナーの月次レポートを取得するが、私は電子メールで重複しましたように、一意の値によってメールをフィルタしません。

現在使用されているデータベースはPostgresqlです。

これはどのように行うことができますか?あなたが行うことができますので

+0

あなたはpostgresのを使用していますか? – Sayse

+0

はい、質問にこれを追加します。 – nobe4

答えて

5

Countは、distinct argumentをとります

donors = qs.values('month').annotate(count=Count('email', distinct=True)).order_by('month') 
関連する問題