如何获取过去48小时的数据 - Django

时间:2018-05-18 19:37:28

标签: python django python-3.x django-models django-views

我正在建立一个新闻网站。我需要显示48小时最常见的新闻。 所以我首先需要获得48小时的新闻,然后获得它的光盘。 目前,我正在使用一个非常复杂的方法,该方法来自教程:

def get_two_days_read_data(content_type):
    today = timezone.now().date()
    dates = []
    read_nums = []

    for i in range(2, 0, -1):
        date = today - datetime.timedelta(days=i)
        dates.append(date.strftime('%m/%d'))
        read_details = ReadDetail.objects.filter(content_type=content_type, date=date)
        result = read_details.aggregate(read_num_sum=Sum('read_num'))
        read_nums.append(result['read_num_sum'] or 0)
    return dates, read_nums

我的问题是,有没有更简单的方法?

例如:

def newsDetailView(request, news_pk):
    news = get_object_or_404(News, id=news_pk)
    News.objects.filter(id=news_pk).update(pv=F('pv') + 1)
    48_hours_hot_news = news.objects.filter(**48_housrs**).order_by('-pv')

    return render(request, "news_detail.html", {
        'news': news,
        '48_hours_hot_news' : 48_hours_hot_news
    })

任何朋友都可以帮忙吗?非常感谢你!

1 个答案:

答案 0 :(得分:2)

你可以使用filter,距离他的date created 48小时你的减法,如果结果大于48 hours或相等,你会得到最新消息

from datetime import datetime, timedelta

thetime = datetime.now() - timedelta(hours=48)
results = news.objects.filter(date_created__gte=thetime)
  

请注意,变量名称无法以digit开头: 48_hours_hot_news :错误