0
djangoとSQLのクエリが初めてです。私はdjangoで別名でいくつかの注釈をしようとしています。結果を得ることができません。djangoでcondtionを集約するか注釈を付ける
class EmailEvent(models.Model):
event = models.TextField(blank=True, null=True)
email = models.TextField(blank=True, null=True)
event_date = models.DateTimeField(blank=True, null=True)
私は別のイベントの列の値に対して個別のカウントをしたい:私のテーブルは
+-----------------------+-----------+---------------------+
| email | event | event_date |
|-----------------------+-----------+---------------------|
| [email protected] | open | 2017-01-03 13:26:13 |
| [email protected] | delivered | 2017-01-03 13:26:28 |
| [email protected] | open | 2017-01-03 13:26:33 |
| [email protected] | open | 2017-01-03 13:26:33 |
| [email protected] | open | 2017-01-03 13:34:53 |
| [email protected] | click | 2017-01-03 13:35:22 |
| [email protected] | open | 2016-09-05 00:00:00 |
| [email protected] | open | 2016-09-17 00:00:00 |
| [email protected] | open | 2017-01-03 16:05:36 |
| [email protected] | open | 2017-01-03 20:12:15 |
| [email protected] | open | 2017-01-03 22:06:47 |
| [email protected] | click | 2017-01-09 19:46:26 |
| [email protected] | open | 2017-01-09 19:47:59 |
| [email protected] | open | 2017-01-09 19:48:28 |
| [email protected] | delivered | 2017-01-09 19:52:24 |
+-----------------------+-----------+---------------------+
のように見えるモデルのようなものです。例えば EmailEvent.objects.filter(event='open').distinct('email').count()
結果3つの EmailEvent.objects.filter(event='click').distinct('email').count()
結果2つの EmailEvent.objects.filter(event='delivered').distinct('email').count()
結果2
どのように骨材となるか、1つのクエリに注釈を付ける取得しますか?結果が欲しい
{
'open': 3,
'click': 2,
'delivered': 2,
}
ありがとう!
おかげで仲間!それは魅力のように働く。しかし、私はコードを理解することができません。説明してくれますか? –