このモデルとデータを考慮すると:
Ad_id + Date = 主キー
Ad_id date clicks
------------------------------
3 8/10/12 124
3 7/10/12 433
3 6/10/12 99
4 8/10/12 23
4 7/10/12 80
すべてのクリックの合計を返すために、ad_id でグループ化しようとしています。
SQL用語で:
select Ad_id, date, sum(clicks) from ads group by Ad_id
問題は、Django がモデル内の各フィールドに対して自動的に group by を実行するため、group by が実際には機能しないことです (各行が一意であるため)。
私がすでにチェックした解決策:
次のようなことが可能であることはわかっています。
Ad.objects.values('ad_id').annotate(clicks_sum=Sum('clicks'))
しかし、Ad Model を返すのではなく、辞書を返すので良くありません。
チェーンできないため、生のSQLも使用できません
また、私は設定しようとしました
MyQuerySet.group_by = ['ad_id']
あまりにも動作していません..
したがって、必要なフィールドだけでグループ化する必要があり、その結果が広告モデルになります。