Как получить данные за последние 48 часов - Джанго - PullRequest
0 голосов
/ 18 мая 2018

Я создаю новостной сайт. Мне нужно отобразить 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 голосов
/ 18 мая 2018

Вы можете сделать это с filter, вычитая 48 часов из его date created, если его результат больше 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 : НЕПРАВИЛЬНО

...