我目前正在使用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是我的主要语言,所以请原谅我这个问题听起来很愚蠢
答案 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')