用于存储发生率的Django字段?

时间:2015-07-02 10:20:50

标签: python django usage-statistics

我有一个下载模型。我想存储 每个实例的下载频率。

我可以存储一个计数,但这看起来很简单。旧文件似乎更受欢迎。我的意思是对上传日期的平均值,但这使得新的几乎总是更好。我不一定想要排名,但我想向管理文件的人显示有意义的数据,如:

  • 过去24小时
  • 过去7天
  • 过去30天
  • 过去365天

是否有一个字段,方法或某种通用插件,我可以添加到我的模型中以存储速率,以便我有类似的东西?

编辑:我觉得做“最后的x”意味着必须以某种方式存储每个具有日期时间的实例,直到它们落到最后(并且仅适用于总数)。我愿意采用效率稍高的解决方案,减少客户流失。

1 个答案:

答案 0 :(得分:1)

您尚未说明您将处理多少记录/下载,但这样做的简单方法是创建DownloadCount模型。也许是这样的:

class DownloadCount(models.Model):
    date = models.DateField(auto_now_add=True)
    item_downloaded = models.ForeignKey(Downloads)

然后,您就可以根据日期字段生成指标。

类似的东西:

DownloadCount.objects.filter(
    date__range=(state_date, end_date),
    item_downloaded=<Download-Model>
).count()

显然,缓存此类结果非常有利。

如果您想让结果更准确一些,您还可以在模型中添加IPAddressField,使DownloadCount条记录基于IP地址和日期唯一。{/ p>