2016-05-11 11 views
0
clicks = SellerClick.objects.extra({'date' : "date(timestamp)"}).values('date').annotate(count=Count('timestamp')) 

モデルには、使用していたtimestampというdatetimeフィールドがあります。まず、日時フィールドを日付フィールドに変換します。その後、残りは推測されています。グループ化し、各日付のオブジェクト数を数えます。日付でオブジェクトをグループ化する

timestampフィールドには、その日付を持つオブジェクトの数に基づいて、結果が日付、次にカウントになります。

答えて

1

あなたは最初のクエリーセット以外はすべて持っています。あなたが渡している余分なSQLにはselectが含まれていないので、それに何かを与える必要があります。

clicks = SellerClick.objects.all() 
    .extra({'date' : "date(timestamp)"}) 
    .values('date') 
    .annotate(count=Count('timestamp')) 

参考:StackOverflow: Count number of records by date in Django

+0

私が代わりに 'すべて()'のフィルタを使用している場合は? – User

+0

同じ原理ですが、明らかにクエリーに何かを与えるだけです。あなたは '.extra()'にselectを入れて '.all()'や '.filter()'を完全に削除することもできますが、ユースケースはあなたがすでにやっている方法に役立ちそうです。 –

3

私は好むが終わっ注釈を付け、使用する余分な

from django.db.models.expressions import RawSQL 

SellerClick.objects.annotate(
    date=RawSQL('date(date_joined)',[]), 
).values('date').annotate(count=Count('date'))) 
関連する問題