我正在构建一个应用程序来跟踪用户之间的因果报应。我希望能够建立一个滚动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做到这一点吗
这个模型在我看来是合理的;我真的没有别的办法。无论如何,你需要所有的信息来满足你的要求(尽管
created_at
应该是DateTimeField
?)如果它的速度太慢,您可能只需要添加主动缓存你可以这样做(未经测试,但我认为它应该工作)
它将use the ^{} to group by unique ^{}s and then sum their ^{} values
我添加了
order_by
,以确保如果存在默认顺序,it gets cleared and doesn't interfere with the grouping。不过,这也让你很容易找到业力的头号发送者,当然,只要在最后加上例如[:5]
,如果你做到了-total_sent
,就可以了:)我不认为是
filter
引起了这个问题,但我没有检测就不是阳性相关问题 更多 >
编程相关推荐