基于过去7天在django中创建权重逻辑

时间:2016-07-20 20:50:32

标签: python django

我目前拥有一个Restaurant模型,其中包含相关模型ReviewComment。用户可以评论和评论餐厅。

我试图在Django中创建权重逻辑,其中我显示了权重最大的前三家餐厅。

目前的逻辑如下:

restaurants = Restaurant.objects.all()
top_3 = restaurants.annotate(weight=(Count('review')) + F('views') + (Count('comment'))).order_by('-weight')

如何更新此逻辑,以便只考虑过去7天的评论和评论?

修改 Review和Comment模型都有一个用于跟踪创建对象的字段: pub_date = models.DateTimeField(default=timezone.now, blank=True)

1 个答案:

答案 0 :(得分:3)

我希望这会有所帮助:

dictionary.h

import datetime from django.db.models import Q from django.utils import timezone week_ago = timezone.now() - datetime.timedelta(days=7) top_3 = Restaurant.objects.filter( Q(review__isnull=True) | Q(review__pub_date__gt=week_ago), Q(comment__isnull=True) | Q(comment__pub_date__gt=week_ago), ).annotate(weight=...).order_by('-weight')[:3] review__isnull=True不会过滤掉没有comment__isnull=Truerestaurants的{​​{1}}。如果您不关心reviews,可以使用此过滤器:

comments

文档