私は、ユーザーがお互いに与えるカルマを追跡するアプリケーションを構築しています。私は、7日間のローリング期間でリーダーボードを作成し、7日間のローリング期間で最も多くのカルマを与えた人々のリストを作成できるようにしたいと考えています。私は次のモデルを思いついた:
class KarmaAction(models.Model):
user = models.ForeignKey(User)
sender = models.ForeignKey(User)
karma = models.IntegerField()
created_at = models.IntegerField()
まず、ユーザー数が増えるにつれて、上記のモデルはうまくスケーリングしますか?7日以上経過している行を削除することを考えています。次に、過去数日間に与えられたカルマの対応する合計を使用して送信者のリストを作成する方法を知りたいです。多分それはこのように見えるでしょう:
supporters = {'User 1': 14, 'User 2': 12, 'User 3': 7, 'User 4': 2}
Django ORMでこれを行う方法はありますか?