Django在数据库中查询每周最热门的点击量

时间:2016-06-05 20:45:54

标签: python django web-applications

我目前正在使用django的ORM函数为我的Web应用程序构建可行的后端。我在models.py中有一个Model对象,它与一个特定的url相关并显示在一个特定的url中,该url使用https://github.com/thornomad/django-hitcount跟踪命中。我想更好地组织我的网络应用程序,例如今天的顶级“模特”,本周的顶级“模特”,本月的顶级“模特”,今年的顶级“模特”,有史以来的顶级“模特” 目前我的代码设置如此,以便在本周尝试获得顶级“模型”,因为我没有在'django-hitcount'文档中看到更好的方法来实现这一点

modelList = MyModel.objects.all()



for model in modelList
    model.hit_count.hits_in_last(days=7)
 '''
 then somehow compare this models weekly hits 
 to all the other models weekly hits organized by the top 100
 i'd like to add the top 100 weekly models to a new list then render it '''

代码注释基本上是我的问题。我不太熟悉python或Django,Java是我的主要语言,所以请原谅我这个问题听起来很愚蠢

1 个答案:

答案 0 :(得分:3)

从未使用此软件包,但在检查models definition后,他们使用GFK来存储任何或您的模型的hitcounts,因此为了对其模型进行过滤/注释,您可以定义自己的{ {3}}

from django.contrib.contenttypes.fields import GenericRelation

class MyModel(models.Model):
    # ..

    hitcounts = GenericRelation(
        HitCount,
        content_type_field='content_type',
        object_id_field='object_pk',
    )

现在尝试使用此查询集在一段时间内获取访问量最大的模型:

period = timezone.now() - timedelta(days=7)
top_models = MyModel.objects.filter(
        hitcounts__hit__created__gte=period
    ).annotate(
        counts=models.Count('hitcounts__hit')
    ).order_by('-counts')