Django ORM查询根据投票数和通过天数计算得分

时间:2017-06-29 16:07:06

标签: django orm

我目前正在开发一个类似9gag的网站,用户可在其中提交内容,然后对内容进行upvote / downvote。

在首页上,我想展示所有文章,这些文章是在5天前发布的,至少有2票。我的UserArticle模型有published_at field(A DateTimeField),我有一个名为UserVote模型,用于存储文章的投票。我用以下代码完成了这个:

def article_index(request):

    time_threshold = timezone.now() - timedelta(days=5)

    articles =(UserArticle.objects.annotate(num_votes=Sum('uservote__value'))
        .filter(num_votes__gte=2, published_at__gte=time_threshold)
        .order_by('-num_votes')
    )

我唯一的问题是如何对帖子进行排序。它目前按降序排序,首先获得最高票数。

除了按最高票数进行排序外,我希望将旧文章按照发布后的几天来处罚

类似于:num_votes + age_in_days_since_publication*(-2)

0 个答案:

没有答案