【问题标题】:How to get data from last 48 hours - Django如何获取过去 48 小时的数据 - Django
【发布时间】:2018-10-29 07:13:48
【问题描述】:

我正在建立一个新闻网站。我需要显示 48 小时观看次数最多的新闻。 所以我需要先得到48小时新闻,然后得到它的pv。 目前我正在使用一个非常复杂的方法,它来自一个教程:

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
    })

有朋友可以帮忙吗?非常感谢!

【问题讨论】:

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


    【解决方案1】:

    你可以用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:错误

    【讨论】:

    • 那么如果我想获取一周的数据,可以使用thetime = datetime.now() - timedelta(weeks=1) 吗?
    • 当然你可以,你也可以为48 hourstimedelta(days=2)做的
    • 嗨,朋友,你能帮我解决这个相关的问题吗?非常感谢! stackoverflow.com/questions/50420252/…
    猜你喜欢
    • 1970-01-01
    • 2022-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-15
    • 1970-01-01
    相关资源
    最近更新 更多